【发布时间】:2019-01-30 23:11:05
【问题描述】:
我有这个带有 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]表,其中包含一年中的所有日期,以及无法通过DATEPART 直接计算的额外字段。然后你可以将你的表加入它。 -
@LukStorms 好主意!为什么我没有想到。这可能是一个更可持续的解决方案。谢谢
标签: sql-server tsql sql-server-2017