选择多个日期的mysql日期查询

时间:2010-02-18 16:23:27

标签: mysql

我需要一个类似于

的查询
SELECT datetime FROM blog WHERE UNIX_TIMESTAMP(datetime) < '".($date_string_in_seconds +1000)."' ORDER BY datetime DESC

但不是返回小于参数中给出的最新日期,而是必须返回:
- 具有参数
中给出的确切日期的记录 -if存在,最早的时间戳高于参数
-if存在,其中一个最新时间戳小于参数(上面的查询返回的内容)
换句话说,它应该返回给定的日期以及之前和之后的日期。查询应返回最多三个和至少一个具有有效日期的记录。

我需要此信息作为启用/禁用博客页面上的上一个和下一个输入按钮的基础,并且当前通过两个单独的查询获取信息。
我怀疑有更好的方法。这可以通过一个查询来实现吗?

1 个答案:

答案 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