MySQL中获取日期所在周的周一和周日
数据有时候需要进行周的同比和环比操作,而数据库中周是数字排列的,比如2022年的第20周,这个时候我们最好将第20周的范围给出,便于用户在报表展示及数据分析时候使用,
我们使用mysql来展示下如何使用
按照我们的习惯 周一开始 周日结束,算一个自然周,我们有一个日期码表,里面有连续的日期字段
select the_date
from dim_date;
按照我们的习惯每周是从周一开始,周日结束算完整的一周,我们来获取
获取每周的周一 和周日,mysql中方法如下
select the_date,
concat(
DATE_FORMAT( date_add(the_date,INTERVAL -weekday(the_date) DAY), '%Y-%m-%d'), ' : ',
DATE_FORMAT( date_add(the_date,INTERVAL 6-weekday(the_date) DAY),'%Y-%m-%d')) as week_section
from dim_date;
国际惯例周日算一周开始 周六算结束的计算
select the_date, case when weekday(the_date)=6 then DATE_FORMAT( the_date,'%Y-%m-%d')
else DATE_FORMAT( date_add(the_date,INTERVAL -weekday(the_date)-1 DAY),'%Y-%m-%d')
end as st,
case when weekday(the_date)=6 then DATE_FORMAT( date_add(the_date,INTERVAL 6 DAY),'%Y-%m-%d')
else DATE_FORMAT( date_add(the_date,INTERVAL 5-weekday(the_date) DAY),'%Y-%m-%d')
end as ed
from dim_date