mySQL按日期选择关闭行

时间:2015-09-07 21:50:13

标签: mysql sql date closest

我已经坚持了一下,试图解决我的问题。我在mySQL中有类似的表

- 编号------日期时间------------------
| -1- | --- 2015-09-07 23:36:05-- |
| -2- | --- 2015-09-07 23:36:03-- |
| -3- | --- 2015-09-07 23:36:02-- |
| -4- | --- 2015-09-07 23:36:06-- |
| -5- | --- 2015-09-07 23:36:01-- |
| -7- | --- 2015-09-07 23:36:04-- |

我有参数ID,例如3,限制为6,所以我写了最近行的where子句,包括中间的行,如:

(id> 3 - (限制/ 2))限制6

但现在我得到了日期,我需要选择最接近的行(如果限制为6,那么结果3行<比$ DATE和3行> $ DATE。

我编写了2个运行正常或联合选择的查询,但我想找到一个解决方案,只使用一个简单的查询,如果有人有提示。非常感谢。

1 个答案:

答案 0 :(得分:0)

如果您需要最近的行,则可以计算每行的日期与提供的日期之间的差异(例如,以秒为单位)。

然后通过差异获得ABS值和顺序。

类似的东西:

select id
from table
order by ABS(TIMESTAMPDIFF(SECOND, '2015-09-07 23:36:03', the_date))
LIMIT 4

修改

如果您想按日期订购结果,可以将以前的查询视为子查询,然后重新排序:

select id, the_date
from (
select id, the_date
from the_dates
order by ABS(TIMESTAMPDIFF(SECOND, '2015-09-07 23:36:02', the_date))
LIMIT 4
) a
order by a.the_date

SQLFiddle:http://sqlfiddle.com/#!9/64517/9/0