大家注意这里的 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 是第一天 |
0 | Sunday | 0-53 | 一年中多一个星期天 |
1 | Monday | 0-53 | 一年多3天 |
2 | Sunday | 1-53 | 一年中多一个星期天 |
3 | Monday | 1-53 | 一年多3天 |
4 | Sunday | 0-53 | 一年多3天 |
5 | Monday | 0-53 | 一年中多一个星期一 |
6 | Sunday | 1-53 | 一年多3天 |
7 | Monday | 1-53 | 一年中多一个星期一 |
# 1-7
select * from demo
where year(date) = year(now()) and week(date,1) = week(now(),1)
# 0-6
select * from demo
where year(date) = year(now()) and week(date) = week(now())
本月
select * from demo
where year(date) = year(now()) and month(date) = month(now())
本年
select * from demo
where year(date) = year(now())
感谢您的阅读,欢迎点赞、关注、收藏!如果文章中有任何错误,或者您有更好的理解和建议,也欢迎和我联系!