如何通过在 SQL 服务器中选择周数来获取开始日期和结束日期
How to get start date and end date by selecting week number in SQL Server
我面临这样一种情况,我必须获得特定周数的开始日和结束日。工作日从周六开始到周四结束。
假设我给周数 40,输出的开始日期为 2020 年 9 月 26 日,结束日期为 10 月 1 日。
我用
set datefirst 6
select datepart(week, getdate()) WeekNo
找出周数 - 周从星期六开始。
除了周数之外,您还需要包括年数:
declare @wk int set @wk = 40
declare @yr int set @yr = 2020
select dateadd (week, @wk-1, dateadd (year, @yr-1900, 0)) - 4 -
datepart(dw, dateadd (week, @wk-1, dateadd (year, @yr-1900, 0)) - 4) + 1 StartDate,
dateadd (week, @wk-1, dateadd (year, @yr-1900, 0)) - 4 -
datepart(dw, dateadd (week, @wk-1, dateadd (year, @yr-1900, 0)) - 4) + 6 EndDate
StartDate EndDate
2020-09-26 00:00:00.000 2020-10-01 00:00:00.000
根据这个很棒的答案稍作修改:
我面临这样一种情况,我必须获得特定周数的开始日和结束日。工作日从周六开始到周四结束。
假设我给周数 40,输出的开始日期为 2020 年 9 月 26 日,结束日期为 10 月 1 日。
我用
set datefirst 6
select datepart(week, getdate()) WeekNo
找出周数 - 周从星期六开始。
除了周数之外,您还需要包括年数:
declare @wk int set @wk = 40
declare @yr int set @yr = 2020
select dateadd (week, @wk-1, dateadd (year, @yr-1900, 0)) - 4 -
datepart(dw, dateadd (week, @wk-1, dateadd (year, @yr-1900, 0)) - 4) + 1 StartDate,
dateadd (week, @wk-1, dateadd (year, @yr-1900, 0)) - 4 -
datepart(dw, dateadd (week, @wk-1, dateadd (year, @yr-1900, 0)) - 4) + 6 EndDate
StartDate EndDate
2020-09-26 00:00:00.000 2020-10-01 00:00:00.000
根据这个很棒的答案稍作修改: