如何从WeekNumber和WeekDay获取日期

时间:2019-01-30 23:11:06

标签: sql-server tsql sql-server-2017

我有一个带有WeekNo(年和周)的数据集-WeekDayName,这是有数据的日期。我需要确切地知道现在是几号。

WeekNo  WeekDayName
------  -----------
201905  Mandag
201905  Mandag
201905  Mandag
201905  Tirsdag
201905  Tirsdag
201905  Tirsdag
201905  Onsdag
201905  Onsdag
201905  Onsdag
201905  Torsdag
201905  Torsdag
201905  Torsdag
201905  Fredag
201905  Fredag
201905  Fredag

所需结果:

WeekNo  WeekDayName Date
------  ----------- -----
201905  Mandag      2019-01-28
201905  Mandag      2019-01-28
201905  Mandag      2019-01-28
201905  Tirsdag     2019-01-29
201905  Tirsdag     2019-01-29
201905  Tirsdag     2019-01-29
201905  Onsdag      2019-01-30
201905  Onsdag      2019-01-30
201905  Onsdag      2019-01-30
201905  Torsdag     2019-01-31
201905  Torsdag     2019-01-31
201905  Torsdag     2019-01-31
201905  Fredag      2019-02-01
201905  Fredag      2019-02-01
201905  Fredag      2019-02-01

我已经尝试过了,但这只是给我一周的开始:

declare @IntWeek as varchar(20) SET @IntWeek = '201905'

SELECT DATEADD(wk, DATEDIFF(wk, @@DATEFIRST, LEFT(@IntWeek,4)+'-01-01') + (cast(RIGHT(@IntWeek,2) as int)-1), @@DATEFIRST) AS StartOfWeek

2 个答案:

答案 0 :(得分:0)

您可能会考虑拥有Calendar Table

之后,您可以轻松获得结果

select date 
from Auxiliary.Calendar 
where Year = CAST(LEFT(@IntWeek,4) as int)
  and Week = CAST(RIGHT(@IntWeek,2) as int)
  and WeekDay = 'Mondag'

答案 1 :(得分:0)

创建一个接收2个参数的函数:

  

1.-您一周中的第一天

     

2.-日期名称

The function must do IF

IF dayName = 'Sunday'
  Return same date
Else If dayName = 'Monday
  Return Data + 1 day

....