数据库
首页 > 数据库> > mysql中是如何处理周数,一年的第一周到底从哪天开始计算?

mysql中是如何处理周数,一年的第一周到底从哪天开始计算?

作者:互联网

新的一年2021年来了, 1月1日这天是星期五,不是星期一也不是星期日,这一天到底是2020年的最后一周呢,还是2021年的第一周?

对我而言,这一周是2021年的第一周,但是在mysql中是如何处理呢?

之前做任务的时候,在获取周数相关信息的时候,格式化时间一直用的是%U, 以至于一直认为mysql中处理周相关的逻辑时,是从第0周开始,每周日是一周的第一天。

今天看DATE_FORMAT这个函数时,发现mysql中处理时间有很多种方式,我之前使用的%U只是其中的一种。

比如处理周数和每周第一天,分别就有两种可能:

  1. 每周第一天是周日
  2. 每周第一天是周一
  3. 周数从0开始
  4. 周数从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. 第1周的第一天:%U
  2. 第0周的最后一天: %u
  3. 第1周的第一天: %V
  4. 去年第53周的最后一天: %v

无论我们想这一天是一周的第一天,一年的第几周,mysql都为我们考虑到了

当然最后还是要根据产品的逻辑来定周数了,我们只是普普通通的工具人~

标签:gsr,第一天,FORMAT,周数,mysql,中是,time,DATE,order
来源: https://blog.csdn.net/ayangann915/article/details/112345704