今天,使用
where date(`entry_date`) = curdate()
这个月,
where month(`entry_date`) = month(curdate())
and year(`entry_date`) = year(curdate())
本周
WHERE `entry_date`
BETWEEN (CURDATE() - Interval DAYOFWEEK(CURDATE()) day)
AND (CURDATE() - Interval DAYOFWEEK(CURDATE()) day + Interval 1 week)
以上查询有助于理解。但从性能的角度来看并不好。见下面修改的一个。它要好得多。
SET @s:=(CURDATE() - Interval DAYOFWEEK(CURDATE()) day)
SET @e:=(CURDATE() - Interval DAYOFWEEK(CURDATE()) day + Interval 1 week)
SELECT .... WHERE `entry_date` BETWEEN @s AND @e
这里 DAYOFWEEK 函数返回一个从 1=Sunday 开始的整数。所以你的星期将被算作星期六作为开始日期。如果你想星期一添加+ Interval 2 day
间隔。
也可以简化为以下。但它不支持任何一天作为一周的第一天。所以它不能移植到所有文化中。
where yearweek(`entry_date`) = yearweek(curdate())