考慮一個tasks
表與給定字段:與最接近的指定日期(前後)檢索記錄
id | release_date | task_number
-------------------------------------
1 | 2012-09-01 | task_number#1
2 | 2012-09-07 | task_number#2
3 | 2012-09-11 | task_number#3
4 | 2012-09-05 | task_number#4
5 | 2012-09-21 | task_number#5
6 | 2012-09-31 | task_number#6
我想取回最接近的記錄(之前和之後)給定的日期。
我知道這可以通過使用兩個單獨的查詢來完成。
但是有什麼辦法可以檢索single mysql query
中最接近的記錄嗎?
例如,如果給定的日期是2012-09-11
,輸出應該是:
id | release_date | task_number
-------------------------------------
2 | 2012-09-07 | task_number#2
3 | 2012-09-11 | task_number#3
5 | 2012-09-21 | task_number#5
在我最初的測試中,對timediff調用的結果調用abs會導致始終返回相同的值,無論輸入如何:8385959.000000。試試吧:'SELECT abs(TIMEDIFF('2010-12-31 23:59:59.000001','2008-12-30 01:01:01.000002'));' – chops
@chops是的,我確實發現 - 有趣。基於[這個問題](http://stackoverflow.com/questions/4780128/unexpected-results-for-timediff)似乎有一個簡單的解決方法,雖然:) – Fluffeh
我相信我們必須使用'datediff'而不是' timediff'。我試着修改它,但仍然返回所有行,並且不是前一行和後一行 – Prabhuram