sql server周五日期从周数

时间:2017-11-08 22:40:25

标签: sql-server date

我在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不适用于有效范围之外的整数。

感谢。

2 个答案:

答案 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