将带有'YYYYMMDDHHMMSS'格式的字符串转换为datetime

时间:2015-02-23 16:17:21

标签: sql-server datetime sql-server-2008-r2 datetime-format

我发现已经发布了很多关于将字符串转换为datetime的问题,但我还没有发现任何用于转换字符串20120225143620的内容,其中包括秒数。

我尝试执行干净的转换,而不会将每个细分子串,并与/:连接。

有人有任何建议吗?

1 个答案:

答案 0 :(得分:17)

您可以使用STUFF()方法在字符串中插入字符,将其格式化为SQL Server能够理解的值:

DECLARE @datestring NVARCHAR(20) = '20120225143620'

-- desired format: '20120225 14:36:20'
SET @datestring = STUFF(STUFF(STUFF(@datestring,13,0,':'),11,0,':'),9,0,' ')

SELECT CONVERT(DATETIME, @datestring) AS FormattedDate

<强>输出:

FormattedDate
=======================
2012-02-25 14:36:20.000

如果您的字符串始终具有相同的长度和格式,则此方法将起作用,并且它从字符串的末尾开始工作,以此格式生成值:YYYYMMDD HH:MM:SS

为此,您无需将日期部分分开,因为SQL Server将能够理解它的格式。

相关阅读:

STUFF (Transact-SQL)

  

STUFF函数将字符串插入另一个字符串。它删除起始位置的第一个字符串中指定长度的字符,然后将第二个字符串插入起始位置的第一个字符串中。

     

STUFF(character_expression,start,length,replaceWith_expression)