选择确切的到期日期

时间:2015-04-05 13:39:04

标签: mysql mysqli

我在expiry_date栏中有此记录:

2015-04-30 04:15:29
2015-04-22 06:02:07

我需要选择记录距离到期26天的位置。现在我正在使用这个不起作用。没有选择任何记录。

SELECT * FROM `client` WHERE `expiry_date` = DATE_ADD(NOW(), INTERVAL 26 DAY)

我搜索了这个网站,许多答案都是使用<=运营商。该解决方案部分有效。当我在both列中只需要2015-04-30 04:15:29时,它会选择我的记录expiry_date

如何准确选择即将过期的日期而不是所有日期?提前谢谢。

2 个答案:

答案 0 :(得分:2)

对此的简单解决方案是使用date函数:

WHERE DATE(expiry_date) = DATE_ADD(CURRENT_DATE, INTERVAL 26 DAY)

但是,这会阻止在expiry_date上使用索引。可以使用索引的替代方法是:

WHERE expiry_date >= DATE_ADD(CURRENT_DATE, INTERVAL 26 DAY) AND
      expiry_date < DATE_ADD(CURRENT_DATE, INTERVAL 26 + 1 DAY)

答案 1 :(得分:1)

你遇到这个问题的原因是expiry_date是一种日期时间,所以时间使它不相等。只需将您的代码更改为:

SELECT * FROM client WHERE DATE(expiry_date) = DATE(DATE_ADD(NOW(), INTERVAL 26 DAY))