我有一个带有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
答案 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
....