大家注意这里的 sql 统计的是 “本周”不是 “过去一周”
例如:今天是周三,统计的是本周一到周日这个时间段,而不是上周三到本周三这 7 天
* 所有 sql 中的 date 为我们对应表的 日期字段
本日
select * from demo
where date =date(now())
本周
通常,一年的正常年份为365天,闰年为366天。一年又可以分为许多周,每周有7天。 所以一年,我们经常有365/7 = 52周,周范围是从1到52。
这里需要注意,mysql 中的 week 函数,第二个参数是 mode,默认不传是 0 也就是从上周日开始算 7 天,按中国习惯我们传 1,从周一开始算就行
模式 星期的第一天 范围 星期 1 是第一天
Sunday 0-53 一年中多一个星期天
Monday 0-53 一年多3天
Sunday 1-53 一年中多一个星期天
Monday 1-53 一年多3天
Sunday 0-53 一年多3天
Monday 0-53 一年中多一个星期一
Sunday 1-53 一年多3天
Monday 1-53 一年中多一个星期一
select * from test
where year(date) = year(now()) and week(date,1) = week(now(),1)
select * from test
where year(date) = year(now()) and week(date) = week(now())
本月
select * from test
where year(date) = year(now()) and month(date) = month(now())
本年
select * from test
where year(date) = year(now())