首页 > 解决方案 > 计算持续时间 SQL 的总和

问题描述

我使用以下 sql 来计算第一个查询中的持续时间。

CDate(TimeSerial(Val([EndTime])\100,Val([EndTime]) Mod 100,0)-TimeSerial(Val([StartTime])\100,Val([StartTime]) Mod 100,0))) AS Duration

并得到以下这是好的在此处输入图像描述

现在,我想在另一个查询中进一步计算一周内不同课程的总时间。像 sum(iif(lesson="math",duration,0))

但由于是时候数据类型 sql server 不允许我使用 sum 函数。

我尝试了以下sql。

sum(hour(duration) + minute(duration)) AS Total_time

但这不是我所期望的,因为我想保留一些标准的原始格式。

有没有一种巧妙的方法可以做到这一点?谢谢你。

标签: sqlms-access

解决方案


我建议只接受以秒或十进制小时为单位的总时间:

select datediff("s", starttime, endtime) as diff_seconds,
       datediff("s", starttime, endtime) / (60 * 60.0) as diff_hours
   

推荐阅读