有人可以帮忙吗?我有一个具有日期时间字段和持续时间的表..我需要的是合并一天发生的记录...如下所示,我的第一列显示日期,第二列显示可用的小时数,然后是分钟......你可以看到有一个上午和下午,我需要的是每天只选择一个记录,然后选择总持续时间,所以它显示2004年7月10日只有一个记录,然后持续时间为7小时30分钟。
2004-10-07 09:00:00.000 4 0
2004-10-07 14:00:00.000 3 30
2004-10-08 09:00:00.000 4 0
答案 0 :(得分:1)
如果您使用的是支持SUM
和GROUP BY
命令的数据库,请尝试以下操作:
这适用于sqlite3:
SELECT date(date), (sum(hours)*60+sum(minutes))/60, sum(minutes)%60
FROM dates
GROUP BY date(date)
这是评论中后续问题的答案:
SELECT
date(free.date),
(SUM(hours)*60+SUM(free.minutes))-
(SELECT (SUM(hours)*60+SUM(used.minutes))
FROM used
WHERE date(used.date)=date(free.date))
FROM free
WHERE date(free.date) IN (SELECT DISTINCT date(used.date) FROM used)
GROUP BY date(free.date);
答案 1 :(得分:0)
您可以分三步完成:
答案 2 :(得分:0)
这个想法是你希望将日期时间转换为日期和组。然后你要总结小时和分钟。很容易将它们加总为分钟60*h + m
。但是,将其拆分为几小时和几分钟需要一些算术。
这是一种方法:
select cast(dt as date),
cast(sum(h * 60 + m)/60 as int) as hours,
sum(h * 60 + m) - 60 * cast(sum(h * 60 + m)/60 as int) as minutes
from t
group by cast(dt as date);
不幸的是,转换为日期的具体操作取决于数据库。此外,“模数”操作的语法可能因数据库而异,因此这需要更直接的计算方法。