代码之家  ›  专栏  ›  技术社区  ›  Şafak Gezer

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

  •  2
  • Şafak Gezer  · 技术社区  · 14 年前

    我需要一个类似于

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

    但是,它不返回小于参数中给定日期的最新日期,而是返回:
    -具有参数中给定的确切日期的记录
    -如果存在,则最早时间戳高于参数的时间戳
    -如果存在,最新时间戳小于参数的时间戳(上面的查询返回的值)
    换言之,它应该返回给定的日期和之后和之前的日期。查询最多应返回三条记录,并且至少应返回一条具有有效日期的记录。

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

    1 回复  |  直到 14 年前
        1
  •  1
  •   Quassnoi    14 年前
    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