0

我有这张桌子:

ID      dayNum      dayName     eventTypeID     
-------------------------------------------
1       4           Wednesday   1
2       7           Saturday    1

对于eventTypeID我想选择包含未来或当前日期的行。今天是星期四,那么如何返回dayName星期六所在的行?

我只需要AND以下查询的语句:

SELECT      *
FROM        `events`
WHERE       `eventTypeID` = 1
AND         ??

天数:

dayNum字段是每天的索引,其中星期一 = 1,星期六 = 7

如果您能找到答案,只需将今天的日期数字硬编码为5(星期四)。我已经有逻辑得到今天的dayNum,它与问题并不真正相关。

4

1 回答 1

1

我会按“差异”排序,然后像这样限制 1:

SELECT *
FROM events
ORDER BY MOD(dayNum - DAYOFWEEK(NOW()) + 7, 7)
LIMIT 1

您将需要 MOD 7,因此如果当前日期为 7,则下一个最接近的日期应为 1,相当于 (-6 MOD 7)。那里还有一个额外+ 7的东西,因为 MySQL 似乎喜欢在模后保持负数为负。

SQLFiddle

于 2013-10-31T18:02:02.153 回答