比较日期或日期与时间,具体取决于是否设置了时间

时间:2013-12-22 09:14:16

标签: mysql date datetime

我有一个datetime字段。如果表单中的用户只输入日期,那么时间将被设置为00:00:00,这应该是它应该的样式。

但是在mysql中我需要将此字段与now()curdate()进行比较。如果时间设置且不是00:00:00,我只需要比较日期,如果时间是其他值,我需要将其与now()进行比较。

例如,如果我在mysql date>=now()中使用,并且用户只设置2013/12/22之类的日期,则12/22上的比较将为false,这是我不想要的。我希望12/23上的比较是假的,那么输入的日期在同一天仍然有效。

现在如果使用date>=curdate(),那么如果有人设定时间,则会忽略时间。

一种解决方案是检查时间是否为00:00:00,然后以某种方式将其更改为23:59:59进行比较。

所以底线是,如果00:00:00字段中有datetime时间,则用户显然只设置了日期,因此我需要将日期与curdate()进行比较。如果时间设置为任何其他值,我需要将日期与now()进行比较。

可行吗?

1 个答案:

答案 0 :(得分:1)

我会尝试这个条件:

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

dt >= now() ==>如果日期时间dt比现在更好(),那就更糟糕了。
time( dt ) = '00:00:00' ==>检查时间部分是否为00:00:00
date( now() ) ==>截断now()的时间部分,只留下一个日期部分。

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