代码之家  ›  专栏  ›  技术社区  ›  Luca Filosofi

mysql-按日期接近度检索结果

  •  1
  • Luca Filosofi  · 技术社区  · 15 年前

    我的问题是:

    假设我们有一个带有unix datestamp date_列的calendar_表,那么我希望检索与today日期最接近的事件。

    因此,例如,如果今天没有活动,请根据日期保留最近的活动!

    更新的

    可能我需要更清楚,我需要检索的不仅仅是一个事件,而是表中日期相同、最接近今天日期的所有事件!

    谢谢你们!;-)

    3 回复  |  直到 15 年前
        1
  •  3
  •   Jesse Weigert    15 年前
    SELECT * FROM `calendar_table` WHERE `date_column` = (SELECT `date_column` FROM `calendar_table` ORDER BY ABS(`date_column` - UNIX_TIMESTAMP()) ASC LIMIT 1)
    
        2
  •  2
  •   soulmerge    15 年前
    SELECT *
    FROM `calendar_table`
    ORDER BY ABS(`date_column` - UNIX_TIMESTAMP()) DESC
    LIMIT 1
    
        3
  •  0
  •   BrianCumminger    15 年前

    您可以做的是选择今天的日期和事件日期之间的差异,并选择最小的结果。

    首先选择如下差异:
    SELECT DATEDIFF(EventDate, Now()) As Datediff FROM calendar
    或者,如果您也希望查找过去的事件:
    SELECT Abs(DATEDIFF(EventDate, Now())) As Datediff FROM calendar

    然后按那个字段排序,从列表中去掉第一个字段。