在SQL Server中将日期编号转换为完整日期

时间:2017-08-08 22:58:43

标签: sql sql-server tsql

我在网上搜索了很多,却找不到它。我发现恰恰相反 - 日期至今

例如:第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

由于

4 个答案:

答案 0 :(得分:3)

另一种选择是使用当年的DateFromParts()和GetDate()

示例

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

<强>返回

2017-08-09

答案 1 :(得分:0)

这将为您提供与1900年1月1日相关的日期:

SELECT
   dateadd(day, dayToConvert, 0)
FROM
   myTable

我认为您可以将其更改为2017年1月1日之前:

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

这是12月31日,因为你想在第三个参数中添加那么多天。

答案 2 :(得分:0)

DATEADD函数应该可以正常工作:

SELECT DATEADD(day,221,someDate) AS someDate2 FROM sometable

Docs here

Tutorial here

答案 3 :(得分: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