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

来源:互联网 发布:淘宝卖宠物用品怎么样 编辑:程序博客网 时间:2024/06/05 09:53

在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周一

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


0 0
原创粉丝点击