SQL查询 - 如何计算格式中两个日期的平均时差:5天13小时

时间:2013-01-15 09:10:20

标签: sql db2 timestamp datediff

我用格式编写了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

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

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

我正在使用db2。 谢谢

1 个答案:

答案 0 :(得分: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