mysql的yearweek()函数转换与逆转换。

在sql开发中,经常会有按周进行group by,在将date处理成周时,mysql提供了很多方便的函数,例如week(),yearweek()等。

其中yearweek()是包含年份的week()函数,能更方便的进行聚合。

这次就提供一种对该函数的逆转换方法。


SELECT CURDATE(),
yearweek(curdate()),
weekday(curdate()),
concat(yearweek(curdate()),weekday(curdate())+1),
STR_TO_DATE(concat(yearweek(curdate()),weekday(curdate())+1),'%X%V%w')
;


CURDATE()yearweek(curdate())weekday(curdate())concat(yearweek(curdate()),weekday(curdate())+1)STR_TO_DATE(concat(yearweek(curdate()),weekday(curdate())+1),'%X%V%w')
2015-07-29201530220153032015-07-29

这里做一下解释,第一列是取当前的日期,用yearweek处理后,是年份+周,当前日期正好为第30周(这个周数1-53中的一个,即新年内新第一周为1,今年中去年周内的日子,则为去年+53)

第三列是取周几的函数,这里做一下说明,这个值得区间为0-6,即周一为0,图中2即是周三

第四列是对这个日期进行拼接,只有年份与周不能还原出date,这里需要添加一个星期数,这里注意因为后面使用%w匹配,所以数值上要+1,因为%w是认为1周一

第五列即是对这个日期转换的还原


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值