select
convert(varchar(20), dateadd(week,datediff(week,0,checkTime),2) ,120) as 周,
checkTime as 周对应的日期
from
where '填的日期'<=checkTime and checkTime <='填的日期'
表名
checkTime 为数据库时间字段
这题你都问了4个版本了。。。
建议你先给个create table 、insert的模拟数据,以及想要的结果表格例子,否则容易陷入死胡同,这题真没那么麻烦,只要计算好偏差量就行了.
下面这两题要看懂了我的回答,你就能灵活运用了
这个问题不管小时,那么直接加3天就好了
with t as (
select '2022-03-24 08:55:00' checkTime union all
select '2022-03-24 07:55:00' union all
select '2022-03-23 08:55:00' union all
select '2022-03-23 07:55:00' union all
select '2022-03-22 08:55:00' union all
select '2022-03-22 07:55:00' union all
select '2022-03-21 08:55:00' union all
select '2022-03-21 07:55:00' union all
select '2022-03-17 08:55:00' union all
select '2022-03-17 07:55:00' union all
select '2022-03-16 08:55:00' union all
select '2022-03-16 07:55:00' union all
select '2022-03-15 08:55:00' union all
select '2022-03-15 07:55:00' )
select checkTime,datename(weekday,checkTime), datepart(week,DATEADD(day,3,checkTime)) -2 from t
温馨提示:若问题解决了,望给个采纳,谢谢!若有其他疑问随时咨询
1、效果如下
2、语句如下
declare @currentTime varchar(50)
set @currentTime='2022-03-01'
declare @checkTime varchar(50)
declare @index int
set @index=0
while @index<10 begin
set @index+=1
set @checkTime=convert(varchar(20),dateadd(day,@index,@currentTime),120)
select
(
case datepart(weekday,@checkTime)
when 1 then convert(varchar(20),dateadd(day,-4,@checkTime),120)
when 2 then convert(varchar(20),dateadd(day,-5,@checkTime),120)
when 3 then convert(varchar(20),dateadd(day,-6,@checkTime),120)
when 4 then convert(varchar(20),dateadd(day,0,@checkTime),120)
when 5 then convert(varchar(20),dateadd(day,-1,@checkTime),120)
when 6 then convert(varchar(20),dateadd(day,-2,@checkTime),120)
when 7 then convert(varchar(20),dateadd(day,-3,@checkTime),120)
else 'none'
end
) as 周,
@checkTime as 周对应的日期,
(
case datepart(weekday,@checkTime)
when 1 then '【'+datename(weekday,@checkTime)+'】作为一周的第5天'
when 2 then '【'+datename(weekday,@checkTime)+'】作为一周的第6天'
when 3 then '【'+datename(weekday,@checkTime)+'】作为一周的第7天'
when 4 then '【'+datename(weekday,@checkTime)+'】作为一周的第1天'
when 5 then '【'+datename(weekday,@checkTime)+'】作为一周的第2天'
when 6 then '【'+datename(weekday,@checkTime)+'】作为一周的第3天'
when 7 then '【'+datename(weekday,@checkTime)+'】作为一周的第4天'
else 'none'
end
) as 说明
end