考虑一个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