2012-11-19 4 views
9

지난 2 시간 동안 행을 선택하려고합니다. 어떤 이유로 그것은 작동하지 않습니다. 코드 구문은 괜찮아 보이고 다른 테이블에서 사용할 때 작동하지만 테이블 Posts에서 사용할 때 어떤 이유로 2 시간보다 훨씬 오래된 행을 가져옵니다.DATETIME 지난 2 시간의 행 선택

SELECT * FROM Posts WHERE `Date` > SUBDATE(CURRENT_DATE, INTERVAL 2 HOUR) 

코드에 문제가 있습니까? 그것을 쓰는 또 다른 방법이 있습니까? 이것에 대한 이유는 무엇일까요? 이것에

+0

'CURRENT_DATE'에는 시간 부분이 없으므로 자정에서 뺀 2 시간을 빼면됩니다. 내 대답을 확인하십시오. –

답변

6

당신이 CURRENT_DATE를 사용하고 있기 때문에, 당신은 NOW() 또는 CURRENT_TIMESTAMP 대신 사용해야합니다.

문제는 ... 대신 마지막 2 시간, 당신은 전날의 22:00:00을 받고 결국 2 시간 substracting에 의해, 그래서 날짜 값, 00:00:00 시간을 기본값을 CURRENT_DATE를 사용되는 것입니다

6

변화 :

SELECT * FROM Posts WHERE `Date` > SUBDATE(CURRENT_TIMESTAMP, INTERVAL 2 HOUR) 
16

당신은 간단한 표기법을 사용할 수 있습니다

SELECT * FROM Posts WHERE `Date` > NOW() - INTERVAL 2 HOUR 
1

이것을 시도해 볼 수 있습니다

SELECT * FROM Posts WHERE `Date` > DATE_SUB(CURDATE(), INTERVAL 3 HOUR)