mysql计算当前日期属于本月第几周

参考windows日期图,利用mysql,巧妙计算当前日期属于本月第几周


写在前面,
根据评论的一个思想,有个简单的方法,先计算本月份的第一天属于年度哪一周(a),在计算今天属于年度的哪一周(b),b-a+1就完了
实测:SELECT WEEK ( ‘2023-10-27’, 1 ) - WEEK ( ‘2023-10-01’, 1 ) + 1 AS week_of_year;
结果为5


涉及到的mysql函数

  • CEILING()向上取整函数
  • DAY()计算日期是本月的第几天
  • WEEKDAY()计算日期是本周周几,0:表示周一
  • INTERVAL关键字,计算时间间隔

先放答案

SET @d=‘2022-10-26 00:00:00’;
select CEILING((DAY(@d)+WEEKDAY(@d-INTERVAL DAY(@d)-1 DAY)) / 7 )

分步解析

1、总体思想,结合windows的日期看,补齐日期矩阵

在这个图上,我们可以清晰的看到10月26号属于10月的第5周,方法就是从上往下数,在第5行,按照这个思想,我们只需要知道,26号往前推,推到这个日期矩阵的开头也就是 9月26号,算出有几天,然后除7向上取整即可。
在这里插入图片描述

2、分步解释

在这里插入图片描述

1、select DAY(@d); 计算出当前是第几天

10月26号,得出结果为 26

2、select @d-INTERVAL DAY(@d)-1 DAY;计算本月第一天的日期

计算本月第一天的日期,方法有很多种,以下是解释我是用的这一种,得出结果为:2022年10月1日
INTERVAL关键字用于计算间隔多少天的日期
整个语句由三部分组成
@d-INTERVAL:减法,表示往前数
DAY(@d)-1:数量,要想得到10月1号,只需要减去25就行了,所以是 26-1=25
DAY:单位:天

3、select WEEKDAY(@d-INTERVAL DAY(@d)-1 DAY);计算本月第一天属于周几

得出结果为:5
0表示周一,以此类推,当前10月1号是周六,也就 计算结果为5.
此时,就很清晰了,刚好10月1号,再往前补5天,刚好补齐整个日期矩阵

4、(DAY(@d)+WEEKDAY(@d-INTERVAL DAY(@d)-1 DAY);计算整个矩阵有几天

换算成数据公式就是 26 + 5 = 31天,
在这里插入图片描述

5、最后除7,向上取整,得出属于第几周。 CEILING()

select CEILING((DAY(@d)+WEEKDAY(@d-INTERVAL DAY(@d)-1 DAY)) / 7 )
得出结果为 31 / 7 = 4.428571428571429
向上取整为 5

  • 6
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值