2013-12-22 95 views
0

我有一個datetime字段。如果表單中的用戶只輸入日期,那麼時間將被設置爲00:00:00當然,這是它應該是的方式。比較日期或日期與時間,具體取決於時間設置

但在mysql中,我需要將此字段與now()curdate()進行比較。如果時間已設置且不是00:00:00我只需要比較日期,如果時間是其他值,則需要將其與now()進行比較。

例如,如果我在mysql date>=now()中使用,並且用戶只設置了像2013/12/22這樣的日期,那麼比較結果將在我不想要的12/22上爲假。我想這個比較在12/23上是錯誤的,那麼輸入的日期在同一天仍然有效。

現在如果使用date>=curdate()那麼如果有人設置時間,時間將被忽略。

一個解決方案是檢查時間是否爲00:00:00,然後以某種方式將其更改爲23:59:59進行比較。

所以底線是,如果在datetime字段中有00:00:00作爲時間,用戶明顯地只設置日期,所以我需要比較日期到curdate()。如果時間設置爲任何其他值,則需要將日期與now()進行比較。

這樣可行嗎?

回答

1

我會嘗試這個條件:

dt >= now() 
OR 
( 
    time(dt) = '00:00:00' 
    AND 
    dt >= date(now()) 
); 

dt >= now() ==>檢測開關,如果日期時間dt是greather比現在()。
time(dt) = '00:00:00' ==>檢查一個時間部分是00:00:00
​​==>從now()截斷時間部分,僅留下一個日期部分。

查看演示==>http://www.sqlfiddle.com/#!2/8609c/6

+0

謝謝,效果很好!不是日期(現在())與curdate相同嗎? – Jerry2