繁体   English   中英

使用datediff时遇到除以零错误

[英]Divide by zero error encountered when using datediff

我在使用此查询时收到此错误。 有没有办法防止这个错误?

这是错误

遇到除以零错误。

这是查询:

UPDATE T_SG_WICA_RISK_DETAILS   
SET EarnedPercentage =  case when Policy_ExpiryDate <  (getdate()-1) then '1'
                else datediff(day, Policy_EffectiveDate,(getdate()-1)) /
datediff(day, Policy_EffectiveDate,Policy_ExpiryDate)
                end

根据您的要求和架构,您可以将此类值视为NULL

UPDATE T_SG_WICA_RISK_DETAILS   
SET EarnedPercentage = case
  when Policy_ExpiryDate <  (getdate()-1) then '1'
  else datediff(day, Policy_EffectiveDate,(getdate()-1)) /
    NULLIF(datediff(day, Policy_EffectiveDate,Policy_ExpiryDate), 0)
end

注意除数中的NULLIF() DATEDIFF产生值0时,它将产生NULL并且由于包含NULL算术表达式将产生NULL ,您的除法最终将是NULL

使用上面的方法,如果NULL结果没有用,您可以通过将ELSE的整个表达式包装到ISNULL()来获得任何值:

UPDATE T_SG_WICA_RISK_DETAILS   
SET EarnedPercentage = case
  when Policy_ExpiryDate <  (getdate()-1) then '1'
  else ISNULL(datediff(day, Policy_EffectiveDate,(getdate()-1)) /
    NULLIF(datediff(day, Policy_EffectiveDate,Policy_ExpiryDate), 0), 0)
end

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM