有朋友在FB上問到,他們將日期的分隔符號都置換成空字串後的字串,要如何將它再轉回成DateTime呢?
例如日期 2013/04/02 14:08:37 會轉成 20130402140837 。 要如何將它再轉回成DateTime呢?
有想到以下的方式,
01 | DECLARE @DateTimeVaue VARCHAR (30) |
02 | SET @DateTimeVaue = '20130402140837' -- 2013/04/02 14:08:37 |
03 | |
04 | --使用字串函數先將字串轉成日期格式字串再轉成DateTime (20130402140837 => 20130402 14:08:37) |
05 | SELECT CONVERT (DATETIME, LEFT (@DateTimeVaue, 8) + ' ' |
06 | + SUBSTRING (@DateTimeVaue, 9, 2) + ':' |
07 | + SUBSTRING (@DateTimeVaue, 11, 2) + ':' |
08 | + RIGHT (@DateTimeVaue, 2), 112) |
09 | |
10 | --使用DATEADD來將時間加總 |
11 | SELECT DATEADD(s, CAST ( RIGHT (@DateTimeVaue, 2) AS INT ), |
12 | DATEADD(n, CAST ( SUBSTRING (@DateTimeVaue, 11, 2) AS INT ), |
13 | DATEADD(hh, |
14 | CAST ( SUBSTRING (@DateTimeVaue, 9, 2) AS INT ), |
15 | CONVERT (DATETIME, LEFT (@DateTimeVaue, 8), 112)))) |
網路上查到的做法「how can i convert 'yyyymmddhhmmss' to datetime」,如下,
1 | -- 使用STUFF先將字串轉成日期格式字串再轉成DateTime (20130402140837 => 20130402 14:08:37) |
2 | DECLARE @DateTimeVaue VARCHAR (30) |
3 | SET @DateTimeVaue = '20130402140837' -- 2013/04/02 14:08:37 |
4 | SELECT CONVERT (DATETIME, STUFF(STUFF(STUFF(@DateTimeVaue, 9, 0, ' ' ), 12, 0, ':' ), 15, 0, ':' )) |
不知各位是否有其他的方式呢