Mysql Datediff查询

sat*_*ish 8 mysql sql time datediff date

我需要从表中得到结果,日期应与当前日期相差5.

即.,specific_date列在我的表中.日期的格式是YYYY-MM-DD.

我需要查询类似的,

SELECT * FROM `table_name` WHERE DATEDIFF(NOW(), specific_date) < 5
Run Code Online (Sandbox Code Playgroud)

O. *_*nes 11

看起来你正试图这样做:

WHERE specific_date < (NOW() + 5 days)
Run Code Online (Sandbox Code Playgroud)

首先,仔细考虑边界情况.这些边界情况可以在SQL中咬你的脚踝.你真的想要吗?

WHERE specific_date <= (NOW() + 5 days)
Run Code Online (Sandbox Code Playgroud)

您的specific_date列时间戳是否仅包含天数(即时间等于午夜的日期),还是包含日期和时间?如果你想得到你想要的结果,你需要注意这些细节.

无论如何,试试这个:

WHERE specific_date <= DATE_ADD(NOW(), INTERVAL 5 DAY)
Run Code Online (Sandbox Code Playgroud)

这是进行此类查找的好方法.列值独立于不等式谓词(the <=)的一侧,因此如果列上有索引,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
Run Code Online (Sandbox Code Playgroud)

等等.