我需要一个类似于
的查询SELECT datetime FROM blog WHERE UNIX_TIMESTAMP(datetime) < '".($date_string_in_seconds +1000)."' ORDER BY datetime DESC
但不是返回小于参数中给出的最新日期,而是必须返回:
- 具有参数
中给出的确切日期的记录
-if存在,最早的时间戳高于参数
-if存在,其中一个最新时间戳小于参数(上面的查询返回的内容)
换句话说,它应该返回给定的日期以及之前和之后的日期。查询应返回最多三个和至少一个具有有效日期的记录。
我需要此信息作为启用/禁用博客页面上的上一个和下一个输入按钮的基础,并且当前通过两个单独的查询获取信息。
我怀疑有更好的方法。这可以通过一个查询来实现吗?
答案 0 :(得分:1)
SELECT datetime
FROM (
SELECT datetime
FROM blog
WHERE datetime < FROM_UNIXTIME($date)
ORDER BY
datetime DESC
LIMIT 1
) p
UNION ALL
SELECT datetime
FROM blog
WHERE datetime = FROM_UNIXTIME($date)
UNION ALL
SELECT datetime
FROM (
SELECT datetime
FROM blog
WHERE datetime > FROM_UNIXTIME($date)
ORDER BY
datetime
LIMIT 1
) n