将 'YYYYMMDDHHMMSS' 格式的字符串转换为日期时间
Convert a string with 'YYYYMMDDHHMMSS' format to datetime
我知道已经有很多关于将字符串转换为 datetime
的问题,但我还没有找到任何可以转换像 20120225143620
这样包含秒的字符串的东西。
我试图执行一个干净的转换,而不对每个段进行子字符串化并与 /
和 :
连接。
有人有什么建议吗?
您可以使用 STUFF()
方法将字符插入到您的字符串中以将其格式化为一个值 SQL 服务器将能够理解:
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 服务器将能够理解它的格式。
相关阅读:
The STUFF function inserts a string into another string. It deletes a specified length of characters in the first string at the start position and then inserts the second string into the first string at the start position.
STUFF ( character_expression , start , length , replaceWith_expression )
我知道已经有很多关于将字符串转换为 datetime
的问题,但我还没有找到任何可以转换像 20120225143620
这样包含秒的字符串的东西。
我试图执行一个干净的转换,而不对每个段进行子字符串化并与 /
和 :
连接。
有人有什么建议吗?
您可以使用 STUFF()
方法将字符插入到您的字符串中以将其格式化为一个值 SQL 服务器将能够理解:
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 服务器将能够理解它的格式。
相关阅读:
The STUFF function inserts a string into another string. It deletes a specified length of characters in the first string at the start position and then inserts the second string into the first string at the start position.
STUFF ( character_expression , start , length , replaceWith_expression )