有没有一种方法可以让MySQL在1
转换0
或转换为日期(SELECT NOW() = '2016-10-10'
)时为CAST('2016-10-10' AS DATE)
返回DATE('2016-10-10')
而不是DATE
我的实际案例是DATETIME
和JOIN
列之间的比较。我想在这些列上{{1}},但只有当我能让MySQL只比较日期而忽略时间时才可能这样做。
我无法进行演员/转换,因为这非常昂贵(Slow query performance left joining a view)。
答案 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
根据您的实际情况,它可能有用也可能没有用。