0

我用以下格式编写了 SQL 表达式:

    select date1,date2,
cast ( Floor ( timestampdiff   (4, char (     timestamp (DATE2)-  
     timestamp (DATE1)))/1440) as char (3))||'days' ||' '  
 || cast ( Floor ( Mod ( timestampdiff (4, char(   timestamp (DATE2)-  
     timestamp (DATE1))) , 1440) / 60) as char (3)) ||'hours' 

因此,我在几分钟内有所不同,然后将其转换为几天和几小时。示例结果将是:

DATE1                  DATE2                  DIFFERENCE
2012-01-01 10:00:00    2012-01-03 12:00     2 days 2 hours
2012-01-03 11:00:00    2012-01-03 12:00     0 days 1 hours

这是我目前得到的结果,没关系。但是现在我想获得具有平均差异值的单独结果。所以第一行的分钟数是 3000。第二行的分钟数是 60。平均值是 (3000+60)/2=1530 = 1 天 1 小时

所以我想要这种格式的结果:平均值:“1天1小时”

我正在使用 db2。谢谢

4

1 回答 1

0

我不知道 db2,但我是为 sql server 做的,估计不会有很多变化

sqlFiddle

您需要的是聚合函数中的 OVER() 子句

select *, DATEDIFF(hour, date1, date2)/24 as days
,DATEDIFF(hour, date1, date2)%24 as hours
,DATEDIFF(hour, date1, date2) as asdf,
AVG(DATEDIFF(hour, date1, date2)) over() as avgHours
from #temp
于 2013-01-15T09:42:02.717 回答