我需要从表中得到结果,日期应该与当前日期相差5。Mysql Datediff查询
即,specific_date
列出现在我的表中。日期格式为YYYY-MM-DD
。
我需要查询类似,
SELECT * FROM `table_name` WHERE DATEDIFF(NOW(), specific_date) < 5
我需要从表中得到结果,日期应该与当前日期相差5。Mysql Datediff查询
即,specific_date
列出现在我的表中。日期格式为YYYY-MM-DD
。
我需要查询类似,
SELECT * FROM `table_name` WHERE DATEDIFF(NOW(), specific_date) < 5
它看起来像你试图做到这一点:
所有的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
等等。
是的谢谢,它的工作。 – sathish
这也适用于几个小时?例如: 'WHERE specific_date <= DATE_ADD(NOW(),INTERVAL 24 HOUR)' –
是的,请参阅我的编辑。 –