2014-06-24 75 views
-1

我試圖讓一個給定的日期之後的日期,讓我們說2014:06:24 18:27:15所以這裏是我的查詢:SQL比較日期返回錯誤結果

SELECT 
    collected, 
    ip 
FROM syslogs 
WHERE date_format(collected, '%Y:%m:%d %H:%k:%s') > date_format('2014:06:24 18:27:15', '%Y:%m:%d %H:%k:%s') 
ORDER BY collected DESC 

和輸出使我這個:

[...] 
24/06/2014 18:22:16 192.168.0.12 
24/06/2014 18:22:16 192.168.0.12 
24/06/2014 18:21:54 192.168.0.12 
24/06/2014 18:21:54 192.168.0.12 
24/06/2014 18:21:39 192.168.0.12 
24/06/2014 18:21:39 192.168.0.12 
24/06/2014 18:21:34 192.168.0.12 
[...] 

這意味着它會返回之前所需的時間。這怎麼可能?

+1

爲什麼你在第一次使用DATE_FORMAT()進行日期比較? –

+0

3大於1,就像3 + 2大於1 + 2一樣。 – Strawberry

回答

2

我認爲問題在於使用「k」分鐘。根據this,「k」爲小時,如果小時邊界處於外部,則輸入27。

+0

這裏是官方文檔:http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_date-format –

+0

我誤解了!你是對的:) –

+0

其實,真正的問題是你比較字符串而不是日期。 –