我的SQL问题有问题。我有两列日期。 IntD的FinDt和DesProDt。有时FinDt为0,有时DesProDt为0.我需要检查它们是否从0开始。如果其中任何一个是0,那么我想显示0,否则我想在两个日期之间做一个dateDiff来获得一个值。
CASE WHEN (CAST(F0001.dbo.OrdLn.DesProDt AS VARCHAR) = 0
OR CAST(F0001.dbo.OrdLn.FinDt AS VARCHAR) = 0)
THEN 0
ELSE DATEDIFF(D , CONVERT (datetime , CONVERT (varchar , F0001.dbo.OrdLn.DesProDt)) , CONVERT (datetime , CONVERT (varchar , F0001.dbo.OrdLn.FinDt)))
END
我不明白我做错了什么。我收到一个错误,其中表示将varchar数据类型转换为datetime数据类型会导致超出范围的值。
有人可以帮助我吗?
谢谢!
答案 0 :(得分:0)
您有一个或多个无效值。你必须找到它们。它们将处于某种类型的开头或结尾。
select F0001.dbo.OrdLn.DesProDt from table order by F0001.dbo.OrdLn.DesProDt
select F0001.dbo.OrdLn.FinDt from table order by F0001.dbo.OrdLn.FinDt