版权声明:本文为博主原创文章,转载请说明出处 https://blog.csdn.net/u010002184/article/details/86181189
%v | 周 (01-53) 星期一是一周的第一天,与 %x 使用 |
%x | 年,其中的星期一是周的第一天,4 位,与 %v 使用 |
参考:MySQL DATE_FORMAT() 函数 http://www.w3school.com.cn/sql/func_date_format.asp
SQL如下,方法1:
select CURRENT_DATE() -- 2019-01-09
select DATE_FORMAT(CURRENT_DATE(),'%x_%v') -- 2019_02
select DATE_FORMAT('2019-01-06','%x_%v') -- 2019_01
select DATE_FORMAT('2018-12-31','%x_%v') -- 2019_01
select DATE_FORMAT('2018-12-30','%x_%v') -- 2018_52
比如每周一往table1同步上周数据,table1只保留dt过去最近10周的数据,dt的格式是2018_52表示2018年第52周
delete from table1 where dt < DATE_FORMAT(DATE_SUB( CURRENT_DATE(),INTERVAL 10 WEEK),'%x_%v')
or dt = DATE_FORMAT(DATE_SUB( CURRENT_DATE(),INTERVAL 1 WEEK),'%x_%v')
select DATE_FORMAT(DATE_SUB( CURRENT_DATE(),INTERVAL 10 WEEK),'%x_%v') -- 2018_44
select DATE_FORMAT(DATE_SUB( CURRENT_DATE(),INTERVAL 1 WEEK),'%x_%v') -- 2019_01
方法2:
参考:https://bee1314.iteye.com/blog/1143995
-- 指定mode 是1,周一是每周第一天
select YEARWEEK(CURRENT_DATE(),1) -- 201902
select YEARWEEK('2019-01-06',1) -- 201901
select YEARWEEK('2018-12-31',1) -- 201901
select YEARWEEK('2018-12-30',1) -- 201852
-- mode 默认是0,周日是每周第一天
select YEARWEEK('2018-12-30') -- 201852
select YEARWEEK('2018-12-31') -- 201852
select YEARWEEK('2019-01-01') -- 201852
select YEARWEEK('2019-01-05') -- 201852
select YEARWEEK('2019-01-06') -- 201901
select YEARWEEK('2019-01-13') -- 201902
end
mysql version:5.6.38-log