小编典典

MySQL Datediff查询

sql

我需要从表中获取结果,该表的日期应与当前日期相差5。

即,specific_date列存在于我的表格中。日期的格式为YYYY-MM-DD

我需要类似的查询,

SELECT * FROM `table_name` WHERE DATEDIFF(NOW(), specific_date) < 5

阅读 234

收藏
2021-05-16

共1个答案

小编典典

看来您正在尝试这样做:

WHERE specific_date < (NOW() + 5 days)

首先,请仔细考虑边界情况。这些边界情况可能会在SQL中咬伤您的脚踝。你真的想要

WHERE specific_date <= (NOW() + 5 days)

您的specific_date列时间戳仅包含几天(即时间等于午夜的日期)还是包含日期和时间?如果要获得所需的结果,则需要注意这些细节。

无论如何,请尝试以下操作:

WHERE specific_date <= DATE_ADD(NOW(), INTERVAL 5 DAY)

这是进行此类查找的好方法。列值单独位于不等式谓词(<=)的一侧,因此,如果列上有索引,则mySQL可以进行索引范围扫描。

MySQL中的日期算术非常灵活。你可以做

   NOW() + INTERVAL 10 SECOND
   NOW() - INTERVAL 2 MINUTE
   NOW() + INTERVAL 4 HOUR
   CURDATE() - INTERVAL 1 WEEK /* midnight one week ago */
   LAST_DAY(NOW()) + INTERVAL 1 DAY - INTERVAL 1 MONTH  /*first day of present month*/
   NOW() - INTERVAL 1 QUARTER
   CURDATE() - INTERVAL 5 YEAR

等等。

2021-05-16