2015-02-23 161 views
5

我認識到已經發布了很多關於將字符串轉換爲datetime的問題,但是我還沒有找到任何用於轉換像20120225143620這樣的包含秒的字符串的任何內容。將'YYYYMMDDHHMMSS'格式的字符串轉換爲datetime

我試圖執行一個乾淨的轉換,沒有將每個段串連出來,並與/:連接。

有沒有人有任何建議?

回答

7

可以使用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)