[SQL]如何將字串yyyyMMddHHmmss轉成Datetime呢?

[SQL]如何將字串yyyyMMddHHmmss轉成Datetime呢?

有朋友在FB上問到,他們將日期的分隔符號都置換成空字串後的字串,要如何將它再轉回成DateTime呢?

例如日期 2013/04/02 14:08:37 會轉成 20130402140837 。 要如何將它再轉回成DateTime呢?

有想到以下的方式,

DECLARE @DateTimeVaue VARCHAR(30)
SET @DateTimeVaue = '20130402140837' -- 2013/04/02 14:08:37
 
--使用字串函數先將字串轉成日期格式字串再轉成DateTime 	(20130402140837 => 20130402 14:08:37)
SELECT  CONVERT(DATETIME, LEFT(@DateTimeVaue, 8) + ' '
        + SUBSTRING(@DateTimeVaue, 9, 2) + ':' 
		+ SUBSTRING(@DateTimeVaue, 11, 2) + ':'
        + RIGHT(@DateTimeVaue, 2), 112)

--使用DATEADD來將時間加總
SELECT  DATEADD(s, CAST(RIGHT(@DateTimeVaue, 2) AS INT),
                DATEADD(n, CAST(SUBSTRING(@DateTimeVaue, 11, 2) AS INT),
                        DATEADD(hh,
                                CAST(SUBSTRING(@DateTimeVaue, 9, 2) AS INT),
                                CONVERT(DATETIME, LEFT(@DateTimeVaue, 8), 112))))

 

網路上查到的做法「how can i convert 'yyyymmddhhmmss' to datetime」,如下,

-- 使用STUFF先將字串轉成日期格式字串再轉成DateTime 	(20130402140837 => 20130402 14:08:37)	
DECLARE @DateTimeVaue VARCHAR(30)
SET @DateTimeVaue = '20130402140837' -- 2013/04/02 14:08:37
SELECT  CONVERT(DATETIME, STUFF(STUFF(STUFF(@DateTimeVaue, 9, 0, ' '), 12, 0, ':'), 15, 0, ':'))

 

不知各位是否有其他的方式呢?

 

參考資料

how can i convert 'yyyymmddhhmmss' to datetime

字串函數 (Transact-SQL)

Hi, 

亂馬客Blog已移到了 「亂馬客​ : Re:從零開始的軟體開發生活

請大家繼續支持 ^_^