在SQL Server中将日期转换为日期时间

时间:2015-09-01 12:30:24

标签: sql-server tsql datetime sql-server-2012

在数据库表(SQL Server 2012)中,我将日期保存为yyyyxxx格式,其中xxx是一年中的某一天。例如,2015-08-112015223

如何有效地将此格式转换为DATETIME?如何将DATETIME转换为此格式?

2 个答案:

答案 0 :(得分:4)

获取年份部分,转换为日期时间+添加天数

DECLARE @var NVARCHAR(100) = '2015223';

SELECT CAST(LEFT(@var, 4) AS DATETIME) +  CAST(RIGHT(@var, 3) AS INT) - 1;

或者:

DECLARE @var NVARCHAR(100) = '2015223';

SELECT DATEADD(dd,CAST(RIGHT(@var, 3) AS INT)-1, CAST(LEFT(@var, 4) AS DATETIME))

或者如果yyyyxxx是INT:

DECLARE @var INT = 2015223;

SELECT DATEADD(dd,(@var%1000)-1, CAST(CAST((@var/1000) AS NVARCHAR(100)) 
               AS DATETIME));

LiveDemo

答案 1 :(得分:0)

由于第一个问题有一个很好的答案,让我们谈谈第二个问题。

  

如何将DATETIME转换为此格式?

DATENAME函数可以帮助解决它。它会是这样的:

SELECT DATENAME(year, @var) + RIGHT('00' + DATENAME(dayofyear, @var), 3)