2017-04-03 40 views
-1

我有varchar'2016-07-2914:50:13.75300'並且想將它轉換爲datetime數據類型。Cast'2016-07-2914:50:13.75300'varchar to datetime T-SQL

我試着用select cast('2016-07-2914:50:13.75300' as datetime)

但我正在逐漸從字符串轉換日期和/或時間時

轉換失敗。

+1

操作字符串到29'和'14'之間'添加一個空格。 –

+1

並取下尾部'00' – BJones

回答

5

插入DDHH之間的空間,並失去了最後兩個數字MS:

select cast(left(stuff('2016-07-2914:50:13.75300', 11, 0, ' '), 23) as datetime) 
+0

或切換到'datetime2(5)'並保持毫秒;但這並不是OP說他們想要的東西。 – SqlZim

0

你爲什麼不乾脆用 select stuff('2016-07-2914:50:13.75300', 11, 0, ' ')

+0

超過3位數的毫秒級精度不會被解析 –

0

不同的方法使用SUBSTRING,當然是絆腳石是要走的路。

DECLARE @TIME VARCHAR(50) = '2016-07-2914:50:13.75300' 

SELECT CAST(SUBSTRING(@TIME, 1, 10) AS DATETIME) + 
CAST(SUBSTRING(@TIME, 11, LEN(@TIME) - 10) AS TIME) 

結果:

2016-07-29 14:50:13.753