我认识到已经发布了很多关于将字符串转换为日期时间的问题,但我没有找到任何用于转换字符串的内容,如20120225143620,其中包括秒.
我试图执行一个干净的转换,而不是将每个段子串出来并与/和连接:.
有没有人有什么建议?
解决方法
您可以使用STUFF()方法将字符插入到字符串中,以将其格式化为sql Server将能够理解的值:
DECLARE @datestring NVARCHAR(20) = '20120225143620' -- desired format: '20120225 14:36:20' SET @datestring = STUFF(STUFF(STUFF(@datestring,13,':'),11,9,' ') SELECT CONVERT(DATETIME,@datestring) AS FormattedDate
输出:
FormattedDate ======================= 2012-02-25 14:36:20.000
如果您的字符串始终具有相同的长度和格式,则此方法将起作用,并且它从字符串的末尾开始工作,以此格式生成值:YYYYMMDD HH:MM:SS
为此,您无需以任何方式分隔日期部分,因为sql Server将能够理解它的格式.
相关阅读:
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 )