我需要從表中得到結果,日期應該與當前日期相差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)' –
是的,請參閱我的編輯。 –