日期时间字符串在SQL Server中转换为日期时间

时间:2014-11-13 01:22:06

标签: sql-server date

我有这个字符串,它是日期和时间的组合,但是字符串格式意味着它没有空格。我从很长的字符串中解析它,但我现在已经或需要将其转换为标准的日期和时间。

这是我的日期和时间字符串:

141007024755

这是我从一长串数据中解析它的方法

[date&time] = SUBSTRING(@ProductCode, 27, 12)

这是我期待但不能做的格式。

2014-10-07 02:47:55.000

任何人都可以给我一个如何做到这一点的提示吗?也许是一个建议。

感谢。

2 个答案:

答案 0 :(得分:1)

如果字符串总是12个字符,你可以试试这个:

select cast(stuff(stuff(stuff('141007024755', 7,0,' '), 10,0,':'), 13,0,':') as datetime)

基本上它使用stuff函数在日期和时间部分之间插入空格,在不同时间部分之间插入冒号,生成141007 02:47:55之类的字符串,可以使用datetime转换为cast }。

答案 1 :(得分:1)

假设日期的格式与您的样本字符串完全相同,您可以继续将字符串切断并将其重新附加在一起并将结果转换为日期。像这样的简单功能可能会有所帮助:

CREATE FUNCTION dbo.udf_ReturnDateFromString(@DateString AS VARCHAR(14))
RETURNS DATETIME
AS
BEGIN
    SET         @DateString = '20' + @DateString

    RETURN      CAST(LEFT(@DateString, 4) + '-' +
                     SUBSTRING(@DateString, 5, 2) + '-' +
                     SUBSTRING(@DateString, 7, 2) + ' ' +
                     SUBSTRING(@DateString, 9, 2) + ':' +
                     SUBSTRING(@DateString, 11, 2) + ':' +
                     SUBSTRING(@DateString, 13, 2) AS DATETIME)
END;
GO

SELECT  dbo.udf_ReturnDateFromString('141007024755');

结果是:

2014-10-07 02:47:55.000

你明白了。这是在SS 2008 R2上完成的。