sql - sql中日期时间差的总和(HH.MM)

标签 sql sql-server sql-server-2008

我有 SQL 表,例如 DateDiff 的格式为 (hh.mm)

DateDiff   ATM
1.45       121
1.50       121
1.50       121

当我在 ATM 上按 Group by 对 DateDiff 进行 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

TicketRaishedOnClosedOn 为 DateTime

数据库是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

最佳答案

在格式化之前进行求和

SELECT
  ATM,
  CONVERT(VARCHAR(10), SUM(DATEDIFF(Minute, TicketRaisedOn, ClosedOn)) / 60)
  + '.' +
  RIGHT('00' + CONVERT(VARCHAR(2), SUM(DATEDIFF(Minute, TicketRaisedOn, ClosedOn)) % 60), 2)
FROM Ticket
GROUP BY ATM

Sql fiddle :http://sqlfiddle.com/#!3/eca01/1

关于sql - sql中日期时间差的总和(HH.MM),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13991440/

相关文章:

php - 我需要有关 MySQL SELECT 查询的帮助

c# - 使用类对象在 SQL 中添加申请人信息

sql-server - 一张表可以有多少个聚集索引?

php - 重载数据,同时保留 php/MySQL 中的原始数据

sql - ROLLBACK TRAN 会回滚所有内容吗?

php - 我可以使用单个 SQL 查询来执行此操作吗?

sql - 调度多个相互依赖的 SQL Server 代理作业的做法是什么?

c# - 使用socket编程连接SqlServer

sql - SQL Server 2008 中超前滞后函数的替代

sql - 在 SQL Server 2008 中使用分组依据和排序依据检索结果时出错