繁体   English   中英

查找最近四个星期日的日期

[英]Find date for last four sundays

即我需要的是:

这里的关键是它每周都会更改日期,从上周日到上周日的第二个,依此类推,因此它是动态的。

如果有人可以提供帮助,将不胜感激。

CASE
  WHEN f.[STARTDATE] = last week Sunday (03/06) THEN '1 week ago'
  WHEN f.[STARTDATE] = last 2 week Sunday (02/27) THEN '2 weeks ago'
  WHEN f.[STARTDATE] = last 3 week Sunday (02/20) THEN '3 week ago'
  WHEN f.[STARTDATE] = last 4 week Sunday (02/13) THEN '4 week ago'
END AS 'STARTDATE'

谢谢

首先,您需要获得最近的星期日,然后才能从中减去 7、14、21 和 28 天。 最简单的方法是检查当前星期几并计算偏移量:星期日为 0,星期一为 1,依此类推:

with cte as (
    select offsett = case datename(weekday, cast(current_timestamp as date))
        when 'sunday'    then 0
        when 'monday'    then 1
        when 'tuesday'   then 2
        when 'wednesday' then 3
        when 'thursday'  then 4
        when 'friday'    then 5
        when 'saturday'  then 6
    end
)
select case
    when f.[startdate] = dateadd(day, -cte.offsett -  7, cast(current_timestamp as date)) then '1 week ago'
    when f.[startdate] = dateadd(day, -cte.offsett - 14, cast(current_timestamp as date)) then '2 week ago'
    when f.[startdate] = dateadd(day, -cte.offsett - 21, cast(current_timestamp as date)) then '1 week ago'
    when f.[startdate] = dateadd(day, -cte.offsett - 28, cast(current_timestamp as date)) then '2 week ago'
end
from f
cross join cte

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM