我遇到以下问题:
我需要使用dateadd函数计算日期。
dateadd(d,delay),CONVERT(DATE,Started,105))
延迟来自与开始时不同的表格,以及数字格式
问题是我收到了这种类型的错误:
Messaggio 241,livello 16,stato 1,riga 14 从字符串转换日期和/或时间时转换失败。
然后我尝试做类似的事情:
dateadd(d,CAST(delay AS NUMERIC(8)),CONVERT(DATE,Started,105))
导致同样的错误:(
任何人都可以帮助我吗?
答案 0 :(得分:0)
错误信息非常清楚。 “已启动”列中的值无法使用您提供的样式转换为日期。这是您的表设计者在选择将日期存储为字符串时选择的路径。现在您需要清理数据(更好的是 - 清理并将列转换为正确的数据类型)或者编写查询以避免坏行。那你怎么做的?
你可以(并且应该)养成在互联网上寻找答案的习惯。这个问题每天发布在某个地方。假设你有一个当前版本的sql server,你可以使用以下命令找到" bad"行。
select * from dbo.mytable as tbl where try_convert(date, tbl.Started, 105) is null
order by tbl.Started;
您可以调整该逻辑以避免错误的行。