根据日期所在的星期几

时间:2017-09-05 13:10:40

标签: sql-server

对于任何给定日期,我需要确定它是星期几。

我已经知道如何使用此DATENAME(dw,MyDate.Field)以及使用此DATEPART(dw,MyDate.Field)的当天数来获取星期几。

如果我在星期三之前得到了一周中的某一天,那么我想回到那个星期三的日期。

如果星期几是星期三或之后我想要在下周三返回日期。

星期一是我系统中的第1天。

2 个答案:

答案 0 :(得分:1)

使用DATEPART()确定星期几。

针对不同情况使用CASE()

计算日期增量。提示:它是3-dw7+3-dw

使用DATEADD()从当天(由DATEPART返回)到下周三或周三。

答案 1 :(得分:1)

最简单的方法,没有任何计算:

set datefirst 1;
with dates as (
 select CAST('20170906' as datetime) d
 union all
 select DATEADD(day, 1, dates.d) 
 from dates
 where DATEADD(day, 1, dates.d) <= '20170930'
)
select dates.d, DATEADD(day, v.valueToAdd, dates.d) nextWed
from dates
    join (values(1,2),(2,1),(3,7),(4,6),(5,5),(6,4),(7,3))v(dayOfWeek,valueToAdd) on v.dayOfWeek = DATEPART(weekday, dates.d)
order by 1