日期之间的比较失败

时间:2016-10-10 00:03:03

标签: mysql date datetime comparison

有没有一种方法可以让MySQL在1转换0或转换为日期(SELECT NOW() = '2016-10-10')时为CAST('2016-10-10' AS DATE)返回DATE('2016-10-10')而不是DATE

我的实际案例是DATETIMEJOIN列之间的比较。我想在这些列上{{1}},但只有当我能让MySQL只比较日期而忽略时间时才可能这样做。

我无法进行演员/转换,因为这非常昂贵(Slow query performance left joining a view)。

1 个答案:

答案 0 :(得分:2)

这不是您需要投射的'2016-10-10'字符串(因为它是valid date literal),而是NOW()

NOW()会返回您当前的时间戳,包括小时,分钟和秒。虽然'2016-10-10'被解释为'2016-10-10 00:00:00'。其中,大概不等于当前时间。

所以

SELECT DATE(NOW()) = '2016-10-10'

<强> UPD

  

我可以让MySQL只比较日期,忽略时间。

对于比较coldate = coldatetime,您可以比较范围,例如:

coldate <= coldatetime AND coldate + INTERVAL 1 DAY > coldatetime

根据您的实际情况,它可能有用也可能没有用。