我需要从数据库中检索“dateOfTermination”值等于今天日期的记录。 我使用了以下查询,但它不会显示任何结果。
select * from user
where CRM_Status='pending' and dateOfTermination = DATE_ADD(CURDATE(), INTERVAL 1 DAY)
仅当查询如下时才有效。
select * from user
where CRM_Status='pending' and dateOfTermination < DATE_ADD(CURDATE(), INTERVAL 1 DAY)
是因为日期格式的问题吗?
最佳答案
我的猜测是 dateOfTermination
有一个时间部分。试试这个:
select u.*
from user u
where u.CRM_Status = 'pending' and
u.dateOfTermination >= CURDATE() AND
u.dateOfTermination < DATE_ADD(CURDATE(), INTERVAL 1 DAY);
您也可以将其表达为:
select u.*
from user u
where u.CRM_Status = 'pending' and
DATE(u.dateOfTermination) = DATE_ADD(CURDATE(), INTERVAL 1 DAY);
实际上,语义略有不同——但尚不清楚您真正的意图是什么。第一个版本“更好”,因为它可以更好地利用索引来提高性能。
关于mysql - Sql 查询,未使用 CURDATE() 函数检索正确的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48163780/