我有一个SQL表,其中DateDiff的格式为(hh.mm)
DateDiff ATM
1.45 121
1.50 121
1.50 121
当我在ATM上通过Group by执行Sum日期差时,结果会显示为:
4.45 121
但实际上日期时间差应该是:
5.25 121
如何在 SQL 查询中实现相同的功能。
Select Sum(Cast(Convert(Varchar(10),DATEDIFF(HOUR,TicketRaisedOn,ClosedOn))+'.'+
Convert(Varchar(10),DATEDIFF(MINUTE,TicketRaisedOn,ClosedOn)%60) as Numeric(18,2)))[Down Time],ATM
From Ticket Where Closed=1 And DATEPART(DAYOFYEAR,GETDATE())=DATEPART(DAYOFYEAR,TicketRaisedOn)
Group BY ATM Order By [Down Time] Desc
TicketRaisedOn 和 ClosedOn 是日期时间类型。
数据库是 SQL Server 2008。
上面的查询将会输出类似以下的结果(但是其错误,因为它将会把它们当作数字求和而不是日期时间格式)。
Down Time ATM
16.95 282
14.46 1811
14.20 52
14.04 936
示例数据
Select TicketRaisedOn,ClosedOn,ATM
From Ticket
Where ATM=282 And DATEPART(DAYOFYEAR,GETDATE())=DATEPART(DAYOFYEAR,TicketRaisedOn)
And Closed=1
TicketRaisedOn ClosedOn ATM
2012-12-21 01:15:23.793 2012-12-21 15:11:59.240 282
2012-12-21 16:42:29.820 2012-12-21 18:21:30.797 282
TicketRaisedOn,ClosedOn, Closed的数据和表结构? - bonCodigoDATETIME形式存储,所需输出为 HH.MM。 - msmucker0527