我需要得到"即将到来的星期天"的约会
我怎么能这样做?
我已经看到了这个DAYOFWEEK函数,但这并不是我所追求的(在WHERE子句中可能有用)
编辑:
因为我在周日得到了一些有效的答案,所以我从周六到周日的更改回复了问题,这可能会对未来的某些人有所帮助
我在其他地方发现了许多其他"周末"日期问题和答案(包括SO)
对我来说最有用的解决方案是这里找到的接受的答案.
UPDATE
更好地使用curdate()而不是now(),因此可以省略对DATE类型via 的最终转换date().
SELECT curdate() + INTERVAL 6 - weekday(curdate()) DAY;
Run Code Online (Sandbox Code Playgroud)
下周日或
SET @date = '2014-03-05';
SELECT @date + INTERVAL 6 - weekday(@date) DAY;
Run Code Online (Sandbox Code Playgroud)
对于可变日期.
原始答案
只需在下一个星期天使用此声明:
SELECT date(now() + INTERVAL 6 - weekday(now()) DAY);
Run Code Online (Sandbox Code Playgroud)
产量
+-----------------------------------------------+
| date(now() + INTERVAL 6 - weekday(now()) DAY) |
+-----------------------------------------------+
| 2014-04-13 |
+-----------------------------------------------+
Run Code Online (Sandbox Code Playgroud)
说明:
weekday(now())返回当前的工作日(星期一从0开始,6是星期日).从6减去当前的工作日,并得到剩余的天数,直到下一个星期日为止.然后将它们添加到当前日期并获取下一个星期日的日期.
或者,如果您希望保持灵活性以适应任何日期:
SET @date = '2014-03-05';
SELECT date(@date + INTERVAL 6 - weekday(@date) DAY);
Run Code Online (Sandbox Code Playgroud)
产量
+-----------------------------------------------+
| date(@date + INTERVAL 6 - weekday(@date) DAY) |
+-----------------------------------------------+
| 2014-03-09 |
+-----------------------------------------------+
Run Code Online (Sandbox Code Playgroud)