新软件版本让我重建了大部分报告。新版本使用以下格式varchar(17)
将时间存储为DDDD:HH:MM:SS.sss
。以前,相同的数据存储在几秒钟内。我需要对存储为varchar
的数据执行计算,但经典CONVERT(TIME, *THIS_FIELD*)
会导致以下错误:
消息241,级别16,状态1,行2转换时转换失败 字符串的日期和/或时间。
我也试过CAST()
但没有成功。
谢谢!
答案 0 :(得分:1)
您可以通过将日期与时间部分分开来尝试不同的方法。然后,要在几秒钟内进行变换,您可以将天数乘以86.400(一天中的秒数),并使用时间格式14转换另一部分(请查看日期/时间格式here)
假设构建模式如下:
create table Tbl_Timespan (interval varchar(17))
insert into Tbl_Timespan values ('0003:23:12:36.042')
您可以将此列转换为秒:
select
interval,
LEFT(interval,charindex(':',interval)-1)*86400+
DATEDIFF(second,0,convert(varchar, replace(right(interval, len(interval) - charindex(':',interval)),'.',':'),14))
from Tbl_Timespan
我没有处理错误,并且使用函数更好。