0

我正在使用DateDiff函数在 SQL Query 中进行一些计算。DateDiff如果Value 为负值,我的计算就会出错

Declare @ActualTime Numeric(10,2)=677.00

Select Convert(Numeric(10,2),(100*((@ActualTime-(Convert(Numeric(10,2),CONVERT(VARCHAR(10),SUM(DATEDIFF(Minute,VendorTicketRaisedOn ,ClosedOn)) / 60)+'.'+
      Right('00'+CONVERT(VARCHAR(2),SUM(DATEDIFF(Minute, VendorTicketRaisedOn , ClosedOn)) % 60),2))))/@ActualTime*1)))[AGS Uptime %]
      From Ticket

两列VendorTicketRaisedOn&ClosedOn的类型为DateTime。If ClosedOn> VendorTicketRaisedOnThen Value 为负数。

如何处理这种情况以产生结果为 0 ?

如果 Value 为负数,则 DateDiff 应将输出作为 0 而不是 -value

数据库:SQL 服务器 2008

4

1 回答 1

1

询问:

Declare @ActualTime Numeric(10,2)=677.00

SELECT CASE WHEN ClosedOn > VendorTicketRaisedOn 
            THEN 0
       ELSE Convert(Numeric(10,2),(100*((@ActualTime-(Convert(Numeric(10,2),CONVERT(VARCHAR(10),SUM(DATEDIFF(MINUTE,VendorTicketRaisedOn ,ClosedOn)) / 60)+'.'+ Right('00'+CONVERT(VARCHAR(2),SUM(DATEDIFF(MINUTE, VendorTicketRaisedOn , ClosedOn)) % 60),2))))/@ActualTime*1)))
      END AS [AGS Uptime %]
FROM Ticket
于 2013-05-15T07:02:52.853 回答