[英]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
. 两列
VendorTicketRaisedOn
和ClosedOn
的类型为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.