我在MS SQL Server中有下表,其中包含年份编号和周编号:
Year Week
----- ------
2015 33
2014 41
2016 40
如何获得每行具有相应星期五日期的第3列?因此,2015年第33周应该返回:2015年8月14日星期五。我尝试过使用Datefromparts(年,1,周* 7-1),因为使用Date的Excel中的等效函数似乎可以在Excel中使用,但是Datefromparts不适用于有效范围之外的整数。
感谢。
答案 0 :(得分:2)
试试这个
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)))
答案 1 :(得分:0)
也许你可以修改这个函数:
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