SQL小技巧之如何获取某一天的下一个星期一

场景描述:

已知某一个具体日期,想要知道离它最近的下一个星期一,用SQL怎么写?

比如:想要知道离2023/1/1最近的下一个星期一是几号?

SQL步骤拆解:

第1步:假设有这么一个表,表名为date_info

第2步:获取最终结果

select id 
    ,date 
    ,date_add(date_sub(date ,interval weekday(date) day) ,interval 7 day) as next_monday
from date_info

输入上方的SQL语句,最终你将得到下面这些结果

原理解释:

其实原理很简单,就是

  1. 使用函数weekday获取某一天的具体星期数,它是周几。

比如2023-01-01就是 weekday(date)

注意:使用weekday函数获取的星期数的值是从0开始计算的,所以它的星期一是0(如2023-01-02是星期一),星期日是6(如2023-01-01)。

  1. 再用当天减去它自身的星期数,得到这一天所在星期的周一的具体日期

date_sub(date ,interval weekday(date) day)

  1. 最后就是添砖加瓦的过程了,比如想要获得下个星期一,就+7天;想要获得下一个星期三,就+9天

date_add(date_sub(date ,interval weekday(date) day) ,interval 7 day)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值