计算持续时间总和

aiazj4mn  于 2021-07-24  发布在  Java
关注(0)|答案(2)|浏览(474)

我使用下面的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))
但由于是时候了,数据类型sqlserver不允许我使用sum函数。
我尝试了以下sql。

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

但这不是我所期望的,因为我想保留一些标准的原始格式。
有什么好办法吗?谢谢您。

ctehm74n

ctehm74n1#

首先,只需获取数字持续时间:

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

您可以将其求和并转换为日期时间:

CDate(Sum([duration])) AS Total_time

例子:
数据:

查询:

SELECT 
    StartTime, 
    EndTime, 
    TimeSerial(Val([EndTime])\100,Val([EndTime]) Mod 100,0)-TimeSerial(Val([StartTime])\100,Val([StartTime]) Mod 100,0) AS Duration
FROM 
    tTest;
SELECT 
    Count(*) AS Slots, 
    CDate(Sum([Duration])) AS TotalHours
FROM 
    qTest;

结果:

t30tvxxf

t30tvxxf2#

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

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

相关问题