mySQL select 按日期关闭行
mySQL select close rows by date
我有点卡住了,试图解决我的问题。我在 mySQL
中有类似的 table
--id------日期时间------------------
|-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 - (limit / 2)) 限制 6
但现在我得到了日期,我需要 select 最近的行(如果限制是 6,那么结果是 3 行 < than $DATE 和 3 行 > $DATE。
我写了 2 个运行正常或联合 select 的查询,但如果有人有提示,我想找到一个只使用一个更简单的查询的解决方案。非常感谢。
如果您需要最近的行,您可以计算每行的日期与提供的日期之间的差异(例如,以秒为单位)。
然后得到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
我有点卡住了,试图解决我的问题。我在 mySQL
中有类似的 table--id------日期时间------------------
|-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 - (limit / 2)) 限制 6
但现在我得到了日期,我需要 select 最近的行(如果限制是 6,那么结果是 3 行 < than $DATE 和 3 行 > $DATE。
我写了 2 个运行正常或联合 select 的查询,但如果有人有提示,我想找到一个只使用一个更简单的查询的解决方案。非常感谢。
如果您需要最近的行,您可以计算每行的日期与提供的日期之间的差异(例如,以秒为单位)。
然后得到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