2013-12-22 58 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