mysql中是如何处理周数,一年的第一周到底从哪天开始计算?
作者:互联网
新的一年2021年来了, 1月1日这天是星期五,不是星期一也不是星期日,这一天到底是2020年的最后一周呢,还是2021年的第一周?
对我而言,这一周是2021年的第一周,但是在mysql中是如何处理呢?
之前做任务的时候,在获取周数相关信息的时候,格式化时间一直用的是%U
, 以至于一直认为mysql中处理周相关的逻辑时,是从第0周开始,每周日是一周的第一天。
今天看DATE_FORMAT
这个函数时,发现mysql中处理时间有很多种方式,我之前使用的%U
只是其中的一种。
比如处理周数和每周第一天,分别就有两种可能:
- 每周第一天是周日
- 每周第一天是周一
- 周数从0开始
- 周数从1开始
写法如下图:
%U / %u
:每年的第一周从0开始计数,大小写分别表示第一天是周日/周一
%V / %v
:每年的第一周从1开始计数,大小写分别表示第一天是周日/周一
最后在写了sql验证:
SELECT
gsr.order_time,
DATE_FORMAT( gsr.order_time, "%a" ),
DATE_FORMAT( gsr.order_time, "%U" ),
DATE_FORMAT( gsr.order_time, "%u" ),
DATE_FORMAT( gsr.order_time, "%V" ),
DATE_FORMAT( gsr.order_time, "%v" )
FROM
goods_sale_record AS gsr
WHERE
gsr.order_time >= '2021-01-03'
AND gsr.order_time < '2021-01-04'
如图, 21年的1月3日是星期日,这一天有3种可能:
- 第1周的第一天:
%U
- 第0周的最后一天:
%u
- 第1周的第一天:
%V
- 去年第53周的最后一天:
%v
无论我们想这一天是一周的第一天,一年的第几周,mysql都为我们考虑到了
当然最后还是要根据产品的逻辑来定周数了,我们只是普普通通的工具人~
标签:gsr,第一天,FORMAT,周数,mysql,中是,time,DATE,order 来源: https://blog.csdn.net/ayangann915/article/details/112345704