2017-04-03 41 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