sql如何将查询出来的日期转换为定义的星期,查询日期结果下表,定义规则为上周三到本周二为一周,并对周期进行命名如W1、W2等
2020-01-01
2020-01-02
2020-01-03
2020-01-04
2020-01-05
2020-01-06
2020-01-07
2020-01-08
2020-01-09
2020-01-10
2020-01-11
2020-01-12
2020-01-13
2020-01-14
2020-01-15
2020-01-16
2020-01-17
2020-01-18
2020-01-19
2020-01-20
2020-01-21
用代码处理很简单,为啥非要在sql里处理呢
选一个固定的日期,比如1900年1月1日星期一,算select出来的日期和固定日期之间的天数,然后模7,得几就是周几了。
sql server为例;
-- 建表
create table #temp
(my_date varchar(50))
;
-- 导入数据
insert into #temp
select '2020-01-01' as my_date union
select '2020-01-02' as my_date union
select '2020-01-03' as my_date union
select '2020-01-04' as my_date union
select '2020-01-05' as my_date union
select '2020-01-06' as my_date union
select '2020-01-07' as my_date union
select '2020-01-08' as my_date union
select '2020-01-09' as my_date union
select '2020-01-10' as my_date union
select '2020-01-11' as my_date union
select '2020-01-12' as my_date union
select '2020-01-13' as my_date union
select '2020-01-14' as my_date union
select '2020-01-15' as my_date union
select '2020-01-16' as my_date union
select '2020-01-17' as my_date union
select '2020-01-18' as my_date union
select '2020-01-19' as my_date union
select '2020-01-20' as my_date union
select '2020-01-21' as my_date
;
--实现方式
select
my_date as '日期'
,concat('W',datediff(day,'2020-01-01',my_date)/7+1) as '周期'
from #temp
-- 查询结果:
日期 周期
2020-01-01 W1
2020-01-02 W1
2020-01-03 W1
2020-01-04 W1
2020-01-05 W1
2020-01-06 W1
2020-01-07 W1
2020-01-08 W2
2020-01-09 W2
2020-01-10 W2
2020-01-11 W2
2020-01-12 W2
2020-01-13 W2
2020-01-14 W2
2020-01-15 W3
2020-01-16 W3
2020-01-17 W3
2020-01-18 W3
2020-01-19 W3
2020-01-20 W3
2020-01-21 W3
https://blog.csdn.net/weixin_34166472/article/details/85383329