2012-10-26 4 views
4

테이블에 다음 날짜가 있습니다. 오늘 (오늘 날짜가있는 경우) 또는 오늘 날짜가 가장 가까운 과거 날짜가 아닌 경우 가장 가까운 날짜를 어떻게 찾을 수 있습니까? 레코드가 a5434 될 것입니다 그래서 오늘은 '2012-10-07' 경우가장 가까운 날짜를 얻으십시오. mysql

2012-10-01   aa123 
2012-10-02   aa43 
2012-10-03   aa478 
2012-10-04   aa40  
2012-10-05   aa54 
2012-10-06   de34 
2012-10-07   a5434 
2012-10-08   r4t 
2012-10-09   x34 
2012-10-10   q23 
2012-10-11   b53 

는 것입니다. 그러나 2012-10-07이 누락 된 경우 2012-10-06에 속하는 de34의 레코드가 오늘부터 가장 가까운 과거 날이므로이 레코드는 de34이됩니다.

어디서부터 시작해야할지 모르겠으므로 아직 시도하지 않았습니다. 이에 대한 SQL 솔루션이 필요합니다.

+1

"내가 아직 아무것도 시도 havent 한"- 정말? –

+0

레코드가 누락되었을 때의 의미가 명확하지 않습니다. 누락 레코드에 대한 날짜가 여전히 존재합니까? 아니면 행 전체가 사라질 것인가? – ernie

답변

11

그건 간단 해요, 단지 마지막 날짜 < 중 하나 = 현재 날짜를 얻을 :

$now = date("Y-m-d"); 
$sql = "SELECT * FROM date_table where date_field <= '$now' ORDER BY date_field DESC LIMIT 1 OFFSET 1"; 
+0

'date_field'가 아닌'date_data'를 선택하고 싶습니다. 또한 레코드가 없으면 전체 행이 누락 된 경우에만 작동합니다 (예 : 'date_field'가 채워졌지만'date_data'가 공백이면 실패 할 것입니다. – ernie

2

ORDER BY 문을 쿼리에 추가하십시오. 다음은 행을 날짜순으로 정렬합니다. 최신 행은 맨 위에, 가장 오래된 행은 맨 아래에 있습니다.

SELECT `id`, `date` FROM `table` ORDER BY `date` DESC LIMIT 1; 
관련 문제