我有一列abc varchar(100)像这样的数据2011-09-26 16:36:57.810000
abc varchar(100)
2011-09-26 16:36:57.810000
我想将此列转换为DATETIME…
DATETIME
但是做一个
Convert(DATETIME, abc,120)
正在给出此错误:
从字符串转换日期和/或时间时转换失败。
谁能帮助我将varchar格式转换为datetimeSQL Server 2008?
varchar
datetime
提前致谢
您可以使用样式121,但 毫秒yyyy-mm-dd hh:mi:ss.mmm(24h)格式(即) 只能包含3位数字 。
yyyy-mm-dd hh:mi:ss.mmm(24h)
declare @abc varchar(100)='2011-09-26 16:36:57.810' select convert(datetime,@abc,121)
因此,您可以通过将varchar字段限制为23个字符来进行排序,然后再转换为:
declare @abc varchar(100)='2011-09-26 16:36:57.810000' select convert(datetime,convert(varchar(23),@abc),121)
或使用该Left()函数获取前23个字符,如下所示:
Left()
select convert(datetime,left(@abc,23),121)
尽量避免将日期存储为字符串。