2017-08-08 123 views
0

我在网上搜索了很多并且找不到它。我发现正好相反 - 日一天在SQL Server中将日期编号转换为完整日期

例如:天221 ==> 2017年9月8日

该查询将从这个日期天数时做到:

SELECT DATEPART(DAYOFYEAR, SYSDATETIME()) 

SELECT DATEDIFF(day, CAST(DATEPART(YEAR, GETDATE()) AS CHAR(4)) + '-01-01', GETDATE() + 1) AS number_of_today 

感谢

+0

您的参考点是什么?什么日子?进入新的一年的日子? –

+0

今年?不是? – Gold

+0

这是特定的一年吗?直到什么日期?今天? –

回答

2

另一个选择是DateFromParts()和GETDATE()本年度

示例

Select DateAdd(DAY,221,DateFromParts(Year(GetDate())-1,12,31)) 

返回

2017-08-09 
0

这会给你的日期,因为它涉及到1900年1月1日:

SELECT 
    dateadd(day, dayToConvert, 0) 
FROM 
    myTable 

我想你可以改变它通过对基地起飞1月1日,2017年:

SELECT 
    dateadd(day, dayToConvert, '2016-12-31') 
FROM 
    myTable 

这是12月31日,因为要添加许多天的日期在第三论据。

0

存储过程选项:

CREATE PROCEDURE PROC_NUM_TO_DATE @NUM INT,@DATESTART DATE AS 
BEGIN 
SELECT DATEADD(DAY,@NUM ,DATEADD(Day,-1,@DATESTART)) 
END 
GO 

EXECUTE:

EXEC PROC_NUM_TO_DATE 221,'2017-01-01' 

结果:

2017-08-09