[英]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.