如何实现周日的约会?

Dre*_*vid 2 mysql

我需要得到"即将到来的星期天"的约会

我怎么能这样做?

我已经看到了这个DAYOFWEEK函数,但这并不是我所追求的(在WHERE子句中可能有用)

编辑:

因为我在周日得到了一些有效的答案,所以我从周六到周日的更改回复了问题,这可能会对未来的某些人有所帮助

我在其他地方发现了许多其他"周末"日期问题和答案(包括SO)

对我来说最有用的解决方案是这里找到的接受的答案.

cit*_*404 8

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)