将varchar中的datetime转换为datetime

时间:2015-09-24 07:15:20

标签: sql-server

这是我的查询

select cast('2014/07/30 13:57:38.893000' as datetime)

以上查询返回错误消息:

  

Msg 241,Level 16,State 1,Line 1
  从字符串转换日期和/或时间时转换失败。

任何人都可以帮助我吗?

3 个答案:

答案 0 :(得分:1)

字符串中指定的精度可以由Datetime2处理,这就是Datetime2被添加到SQL Server 2008的原因:

select cast('2014/07/30 13:57:38.893000' as datetime2)

从SQL Server Transact SQL Documentation

字符长度:
最少19个职位(YYYY-MM-DD hh:mm:ss)到最多27个职位(YYYY-MM-DD hh:mm:ss.0000000

答案 1 :(得分:0)

这对解析器来说太精确了。

试试这样:

select cast('2014/07/30 13:57:38.893' as datetime)

答案 2 :(得分:0)

试试这个:

declare @s varchar(30)
set @s = '2014/07/30 13:57:38.893000'
select cast(LEFT(@s,LEN(@s)-3) as datetime)

<强> SQL FIDDLE DEMO