简体   繁体   English

DateDiff在SQL中返回负值

[英]DateDiff returns negative value in sql

I am doing some calculation in SQL Query using DateDiff function. 我正在使用DateDiff函数在SQL查询中进行一些计算。 My Calculation went wrong if DateDiff Value came in negative 如果DateDiff负,则我的计算出错

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

Two Columns VendorTicketRaisedOn & ClosedOn are of type DateTime . 两列VendorTicketRaisedOnClosedOn的类型为DateTime If ClosedOn > VendorTicketRaisedOn Then Value Came in negetive. 如果ClosedOn > VendorTicketRaisedOn则该值VendorTicketRaisedOn

How to treat this case to produce result as 0 ? 如何处理这种情况产生结果为0?

If Value is in negative then DateDiff should give output as 0 instead of -value 如果Value为负,则DateDiff应该将输出设置为0而不是-value

DB : SQL SERVER 2008 数据库:SQL SERVER 2008

Query: 查询:

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

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

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