1

我的问题是:

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

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

更新

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

谢谢大家!;-)

4

3 回答 3

3
SELECT * FROM `calendar_table` WHERE `date_column` = (SELECT `date_column` FROM `calendar_table` ORDER BY ABS(`date_column` - UNIX_TIMESTAMP()) ASC LIMIT 1)
于 2010-04-13T21:05:29.493 回答
2
SELECT *
FROM `calendar_table`
ORDER BY ABS(`date_column` - UNIX_TIMESTAMP()) DESC
LIMIT 1
于 2010-04-13T20:17:05.053 回答
0

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

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

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

于 2010-04-13T20:20:37.177 回答