如何通过在 SQL Server 中选择周数来获取开始日期和结束日期

Posted

技术标签:

【中文标题】如何通过在 SQL Server 中选择周数来获取开始日期和结束日期【英文标题】:How to get start date and end date by selecting week number in SQL Server 【发布时间】:2020-09-26 04:45:57 【问题描述】:

我面临一种情况,我必须获取特定周数的开始日期和结束日期。工作日从星期六开始,星期四结束。

假设我给出第 40 周,输出将是 2020 年 9 月 26 日的开始日期和 10 月 1 日的结束日期。

我用

set datefirst 6 
select datepart(week, getdate()) WeekNo

找出星期数 - 星期从星期六开始。

【问题讨论】:

特别是如果你有一个像这样的非标准“周”,你想研究创建所谓的日历表(这将允许你只查找日期表中)。当然,如果您尝试创建一个,那也无济于事...... 【参考方案1】:

除了周数之外,您还需要包括年份数:

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

根据这个很棒的答案稍作修改:SQL Convert Week Number to Date (dd/MM)

【讨论】:

并不是说我不相信这会奏效,我只是有点担心使用非标准周的事情。更具体地说,datepart(dw ...) 取决于文化环境(唉,没有 iso-day-of-week)。 周是用户定义的。 “set datepart 6”给出从星期六开始到星期四结束的一周计算。根据这种安排,答案是 100% 正确的。

以上是关于如何通过在 SQL Server 中选择周数来获取开始日期和结束日期的主要内容,如果未能解决你的问题,请参考以下文章

从SQL Server中的周数获取周开始日期和周结束日期

如何在sql server中获取本周的每日数据

如何使用周值配置单元获取月值

SQL SERVER查询时间是一年中第几周的函数

如何通过删除最少字符数来获取子字符串?

通过在输入框中插入行数来选择多行复选框