小编在写需求的时候发现有一个需求是给出一个开始、起止时间,需要你把每一周的数据汇总然后展现出来,比如给了前四周的日期,需要你自动汇总第一周到第四周的数据,奇葩的来了,正常来说周一到周日为一周,或者周日到周六为一周,但是产品需要周六到周五算一周。
由于数据是从数据中台一个接口出的,这个接口负责出所有的sql图表数据,所以想通过sql完成这件事,当然sql是很复杂的,只是其中这个点比较头疼,本来按照正常的自然周来算,我们可以使用DATE_FORMAT('2022-10-09','%u')(周一为起始周),或者使用WEEK(date, mode)来指定周日为起始周或者周一为起始周。但是怎么指定周六到周五一周呢?
SELECT week(FROM_DAYS(TO_DAYS('2022-10-09'))+1,0) 可以使用week函数,原本week(date,0)意思是周日为一周的开始,所以只需要给data加上偏移量就行了,我的需求是周六为一周的开始,所以只需要周六往后挪一天就到周日了,就可以按照这样分组。
可以看最终结果周六到周五的数据就放到一周里面了,数字代表本年的第几周