【问题标题】:MYSQL - Retrieve Results by Date ProximityMYSQL - 按日期接近检索结果
【发布时间】:2011-02-07 15:14:12
【问题描述】:

我的问题是:

假设我们有一个带有 UNIX 日期戳 date_column 的 calendar_table,我想检索最接近今天日期的事件。

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

更新

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

谢谢大家! ;-)

【问题讨论】:

    标签: mysql date calendar proximity


    【解决方案1】:
    SELECT * FROM `calendar_table` WHERE `date_column` = (SELECT `date_column` FROM `calendar_table` ORDER BY ABS(`date_column` - UNIX_TIMESTAMP()) ASC LIMIT 1)
    

    【讨论】:

    • 谢谢杰西!这正是我想要的!子查询是完美的!我刚刚切换到 ASC 并且工作正常!
    【解决方案2】:
    SELECT *
    FROM `calendar_table`
    ORDER BY ABS(`date_column` - UNIX_TIMESTAMP()) DESC
    LIMIT 1
    

    【讨论】:

    • 嗨,soulmerge,感谢您的回复,我有一个问题,如果我需要保留所有事件而不是同一日期的 1 个事件怎么办?
    【解决方案3】:

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

    首先选择这样的差异:
    SELECT DATEDIFF(EventDate, Now()) As Datediff FROM calendar
    或者如果您还想查找过去的事件:
    SELECT Abs(DATEDIFF(EventDate, Now())) As Datediff FROM calendar

    然后只需按该字段排序并从列表中删除第一个。

    【讨论】:

      猜你喜欢
      • 2011-10-07
      • 2019-04-17
      • 1970-01-01
      • 2012-11-06
      • 2013-09-14
      • 2016-07-07
      • 1970-01-01
      • 2010-11-06
      • 1970-01-01
      相关资源
      最近更新 更多