我的问题是:
假设我们有一个带有 UNIX 日期戳 date_column 的 calendar_table,我想检索最接近今天日期的事件。
因此,例如,如果今天没有活动,请根据日期保留最接近的活动!
更新
可能我需要更清楚,我不仅需要检索一个事件,还需要检索表中具有相同日期的所有事件,最接近今天的日期!
谢谢大家!;-)
SELECT * FROM `calendar_table` WHERE `date_column` = (SELECT `date_column` FROM `calendar_table` ORDER BY ABS(`date_column` - UNIX_TIMESTAMP()) ASC LIMIT 1)
SELECT *
FROM `calendar_table`
ORDER BY ABS(`date_column` - UNIX_TIMESTAMP()) DESC
LIMIT 1
您可以做的是选择今天日期和事件日期之间的差异,然后选择最小的结果。
首先选择这样的差异:
SELECT DATEDIFF(EventDate, Now()) As Datediff FROM calendar
或者如果您还想查找过去的事件:
SELECT Abs(DATEDIFF(EventDate, Now())) As Datediff FROM calendar
然后只需按该字段排序并将第一个从列表中删除。