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都为我们考虑到了

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

最后,再放一个DATE_FORMAT学习链接:

https://www.w3school.com.cn/sql/func_date_format.asp

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:书香水墨 设计师:CSDN官方博客 返回首页
评论 2

打赏作者

annyangya

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值