处理DATEDIFF计算中的空值

时间:2016-08-23 09:19:46

标签: tsql select sql-server-2012 datediff

我正在使用Microsoft SQL Server 2012并继续遇到错误

  

遇到零错误。

如下所示。如果两个日期相同,我想添加一个空值。

SELECT 
    sf.TotalPrice / DATEDIFF(day, sf.StartDate,sf.EndDate) as DailyAllocatedRevenue,
    sf.TotalPrice
FROM 
    sftable 

4 个答案:

答案 0 :(得分:2)

在Sql-Server中使用NullIf函数 如果差异返回0,它将返回null

请参阅此link将帮助您

SELECT 

    sf.TotalPrice / NULLIF(DATEDIFF(day, sf.StartDate,sf.EndDate),0) as DailyAllocatedRevenue
    ,sf.TotalPrice

FROM sftable 

答案 1 :(得分:2)

您可以将DATEDIFF包裹在NULLIF

SELECT 

    sf.TotalPrice / NULLIF(DATEDIFF(day, sf.StartDate,sf.EndDate),0) as DailyAllocatedRevenue
    ,sf.TotalPrice

FROM sftable 

如果任何输入为NULL,或者结果为0,则它将变为NULL,并通过该部门传播。

答案 2 :(得分:1)

尝试并使用

case 
     when sd.startdate <> sd.EndDate then sf.TotalPrice / DATEDIFF(day, sf.StartDate, sf.EndDate) as DailyAllocatedRevenue
     else sf.TotalPrice
end

答案 3 :(得分:0)

IIF(DATEDIFF(day, sf.StartDate,sf.EndDate)=0,NULL, sf.TotalPrice
/Convert(Decimal(18,4),DATEDIFF(day, sf.StartDate,sf.EndDate)))

应该做的伎俩