我有这张桌子:
ID dayNum dayName eventTypeID
-------------------------------------------
1 4 Wednesday 1
2 7 Saturday 1
对于
eventTypeID
,我想选择包含未来或当前日期的行。今天是星期四,那么如何返回dayName
是星期六的行?我只需要一个
AND
语句用于以下查询:SELECT *
FROM `events`
WHERE `eventTypeID` = 1
AND ??
dayNum:
dayNum
字段是每天的索引,其中星期一= 1
,星期六= 7
。如果您能找到答案,只需将今天的日期硬编码为
5
(星期四)。我已经有了获取今天的dayNum
的逻辑,并且与该问题并不是真的相关。 最佳答案
我将按“差异”进行排序,然后这样限制1:
SELECT *
FROM events
ORDER BY MOD(dayNum - DAYOFWEEK(NOW()) + 7, 7)
LIMIT 1
您将需要MOD 7,因此如果当前日期是7,则下一个最近的日期应该是1,等于(-6 MOD 7)。那里有一个额外的
+ 7
,因为MySQL似乎希望对负数取模后保持负数。SQLFiddle