MYSQL CURDATE() -7 在 1 月 1 日询问时省略 12 月的天数

MYSQL CURDATE() -7 omits days in December when asked at the first of January

我有一个 table 保存过去和即将到来的 class 的数据。我的查询要求输出从 7 天前开始的任何 class。 IE。如果今天是星期五,我将能够看到上周 classes 和即将到来的 classes.

一直到过年,它的表现都如期而至。现在是 1 月 2 日,我只能看到今年的 classes。尽管 12 月 30 日有一个class。

SELECT * FROM DriverEducationClass WHERE classDate > CURDATE() -7 ORDER BY classDate;

它在前一个月的变化中起作用。这跟换年有关系吗?

这与年份的变化无关,与你的减法有关:

mysql> select curdate() - 7, curdate() - interval 7 day;
+---------------+----------------------------+
| curdate() - 7 | curdate() - interval 7 day |
+---------------+----------------------------+
|      20150095 | 2014-12-26                 |
+---------------+----------------------------+
1 row in set (0.00 sec)

请注意您的 -7 版本 returns 是一个不稳定的整数,而 - interval 版本 returns 是一个正确的日期。