0

任何人都可以帮忙吗?我有一个包含日期时间字段和持续时间的表。我需要合并一天发生的记录...如下所示,我的第一列显示日期,第二列显示可用小时数,然后是分钟...如您所见,有一个上午和一个下午,我需要的是每天只选择一条记录,然后选择总持续时间,因此它显示 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
4

3 回答 3

1

如果您正在使用一些支持SUMandGROUP 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);
于 2013-09-19T11:29:03.907 回答
0

您可以通过 3 个步骤执行此操作:

  • 将小时和分钟添加到日期本身
  • 然后取同一天的两个日期之间的差异(这会给你那天的总时间)
  • 然后分别显示日期和时间
于 2013-09-19T11:24:06.337 回答
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);

不幸的是,转换为日期的具体操作取决于数据库。此外,“模数”运算的语法可能因数据库而异,因此直接进行计算会更安全。

于 2013-09-19T11:25:32.127 回答