小编典典

在具有Millisec的sql中将varchar转换为datetime

sql

我有一列abc varchar(100)像这样的数据2011-09-26 16:36:57.810000

我想将此列转换为DATETIME

但是做一个

Convert(DATETIME, abc,120)

正在给出此错误:

从字符串转换日期和/或时间时转换失败。

谁能帮助我将varchar格式转换为datetimeSQL Server 2008?

提前致谢


阅读 199

收藏
2021-03-23

共1个答案

小编典典

您可以使用样式121,但 毫秒yyyy-mm-dd hh:mi:ss.mmm(24h)格式(即) 只能包含3位数字

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个字符,如下所示:

select convert(datetime,left(@abc,23),121)

尽量避免将日期存储为字符串。

2021-03-23