如何从周数和工作日获取日期
How to get date from WeekNumber and WeekDay
我有这个数据集,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
你可以考虑 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'
创建一个接收 2 个参数的函数:
1.- your First day of the week
2.- the day name
The function must do IF
IF dayName = 'Sunday'
Return same date
Else If dayName = 'Monday
Return Data + 1 day
.....
我有这个数据集,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
你可以考虑 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'
创建一个接收 2 个参数的函数:
1.- your First day of the week
2.- the day name
The function must do IF
IF dayName = 'Sunday'
Return same date
Else If dayName = 'Monday
Return Data + 1 day
.....