将 'YYYYMMDDHHMMSS' 格式的字符串转换为日期时间

问题描述 投票:0回答:2

我认识到已经发布了很多关于将字符串转换为

datetime
的问题,但我还没有找到任何用于转换像
20120225143620
这样包含秒的字符串的内容。

我试图执行一个干净的转换,而不需要对每个段进行子字符串化并与

/
:
连接。

有人有什么建议吗?

sql-server datetime sql-server-2008-r2 datetime-format
2个回答
37
投票

您可以使用

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 将能够在格式化时理解它。

相关阅读:

东西(Transact-SQL)

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

STUFF(字符表达式、开始、长度、替换表达式)


0
投票

选择格式(getdate(),'yyyyMMddHHmmssffff')

Please run the below sql command for unique key generation with timestamp

© www.soinside.com 2019 - 2024. All rights reserved.