我需要获取一年中一周的开始日期和结束日期。
这是我的输入内容
YEAR = 2019 WEEK = 32
结果将是:05/08/2019
和11/08/2019
。
我尝试过:
select (dateadd(week,32-(1),dateadd(week,datediff(week,(-1),dateadd(year,datediff(year,(0),getdate()),(0))),(0))))
select (dateadd(week,32+datediff(week,(0),dateadd(year,datediff(year,(0),getdate()),(0))),(-1)))
但没有年份输入,因此仅适用于当前年份 我需要将此函数放入计算字段中,以创建表
答案 0 :(得分:1)
一个可能的选择是以下语句:
DECLARE @year int = 2019
DECLARE @week int = 32
DECLARE @date date
SELECT @date = DATEADD(week, (@week - 1), DATEFROMPARTS(@year, 1, 1))
SELECT
@date AS CurrentDay,
DATEADD(day, - DATEPART(weekday, @date) + 1, @date) AS StartOfTheWeek,
DATEADD(day, 7 - DATEPART(weekday, @date), @date) AS EndOfTheWeek
结果:
CurrentDay StartOfTheWeek EndOfTheWeek
2019-08-06 2019-08-05 2019-08-11
如果要定义具有计算列的表:
CREATE TABLE Data (
[Year] int,
[Week] int,
[Start_Date] AS DATEADD (
day,
- DATEPART(weekday, DATEADD(week, ([Week] - 1), DATEFROMPARTS([Year], 1, 1))) + 1,
DATEADD(week, ([Week] - 1), DATEFROMPARTS([Year], 1, 1))
),
[End_Date] AS DATEADD (
day,
7 - DATEPART(weekday, DATEADD(week, ([Week] - 1), DATEFROMPARTS([Year], 1, 1))),
DATEADD(week, ([Week] - 1), DATEFROMPARTS([Year], 1, 1))
)
)
INSERT INTO Data ([Year], [Week])
VALUES (2019, 32)
答案 1 :(得分:0)