DateDiffの形式(hh.mm)のようなSQLテーブルがあります
DateDiff ATM
1.45 121
1.50 121
1.50 121
ATMSum
でDateDiffを実行すると、次のような結果が表示されますGroup by
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
はDateTimeです
データベースはSQLServer2008です
上記のクエリは、このような結果を出力します(ただし、日時形式ではなく数値として合計されるため、間違っています)
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