【问题标题】:sql server friday date from week numbersql server 星期五日期从星期数
【发布时间】:2017-11-08 22:40:25
【问题描述】:

我在 MS SQL Server 中有下表,其中包含年号和周号:

Year               Week
-----             ------
2015               33
2014               41
2016               40

如何获得每行对应星期五的日期的第三列?因此,2015 年第 33 周应该返回:2015 年 8 月 14 日星期五。我尝试使用 Datefromparts(year, 1, week*7-1),因为 Excel 中使用 Date 的等效函数似乎可以在 Excel 中解决问题,但是Datefromparts 不适用于有效范围之外的整数。

谢谢。

【问题讨论】:

    标签: sql-server date


    【解决方案1】:

    试试这个

    DECLARE @Year INT = 2016
    DECLARE @Week INT = 40
    
    SELECT DATEADD(dd, 5, (DATEADD(wk, DATEDIFF(wk, 6, '1/1/' + CAST(@Year AS VARCHAR)) + (@Week-1), 6)))
    

    【讨论】:

    • 我认为它不适用于 2021 年。2021 年的第一周从 2021 年 4 月 1 日开始。
    【解决方案2】:

    也许你可以修改这个函数:

    CREATE FUNCTION [dbo].[fn_GetFirstDateOfWeek] (@YearNum int, @WeekNum int)
    RETURNS datetime
    AS
    BEGIN 
    
    DECLARE @FirstWeekDay As Date;
    
    SET @FirstWeekDay = dateadd (week, @WeekNum, dateadd(year, @YearNum-1900, 0)) - 4 - datepart(dw, dateadd(week, @WeekNum, dateadd (year, @YearNum-1900, 0)) - 4) + 1
    
    RETURN @FirstWeekDay
    END
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-12
      • 2017-06-05
      • 1970-01-01
      • 2011-06-25
      相关资源
      最近更新 更多