我有这样的条件来选择今天制作的记录:
created_at > CURDATE()
其中created_at是日期时间。
它不是我做的,通常它可以工作,但客户报告说它并不总是给出正确的结果。
现在我想知道这是否是一个正确的解决方案和良好的实践,还是必须将其更改为“DATE(created_at) = CURDATE()”?
综上所述,如果我们想获取特定日期之后创建的记录,可以将 datetime 与 date 进行比较吗? SQL 会正确处理它还是必须先将其转换为日期?
是的,你需要CAST,这里有一个测试用例,可以更清楚地显示差异。
如果今天是 2023 年 10 月 21 日
SELECT '2023-10-21 23:59:59' > CURDATE()
结果:1
SELECT DATE('2023-10-21 23:59:59') > CURDATE()
结果:0