Sql Server - 帮助Dateadd函数(转换问题)

时间:2017-11-29 11:06:23

标签: sql-server

我遇到以下问题:

我需要使用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))
  

导致同样的错误:(

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

错误信息非常清楚。 “已启动”列中的值无法使用您提供的样式转换为日期。这是您的表设计者在选择将日期存储为字符串时选择的路径。现在您需要清理数据(更好的是 - 清理并将列转换为正确的数据类型)或者编写查询以避免坏行。那你怎么做的?

你可以(并且应该)养成在互联网上寻找答案的习惯。这个问题每天发布在某个地方。假设你有一个当前版本的sql server,你可以使用以下命令找到" bad"行。

select * from dbo.mytable as tbl where try_convert(date, tbl.Started, 105) is null
order by tbl.Started;

您可以调整该逻辑以避免错误的行。