首页 > 解决方案 > 如何在 SQLite DATETIME 字段中获取时间值的总和

问题描述

如何在 SQLite 的日期时间字段中获取存储为 hh:mm 格式的时间值总和?我已经尝试过在sqlite 给出的解决方案:如何在列数据类型为 DATETIME 的情况下添加总时间 hh:mm:ss?它给了我与 Excel 相同的结果。但如果我手动一一数,答案是 44 小时 49 分钟。但是,excel 和从上述 URL 给出的解决方案派生的查询都给出了 20 小时 49 分钟的答案。我包括我使用的查询。

询问:

select time(sum(strftime('%s',appUsageTime)-strftime('%s','00:00')),'unixepoch') 
from offlineAppsUsageHistory 
WHERE appId=3;

无法添加 Excel 截图,但appUsageTime字段中的时间值如下:

01:27
01:10
01:21
00:54
01:28
01:53
01:29
03:30
02:11
03:38
02:40
02:07
03:04
02:42
02:24
02:16
02:05
01:46
02:41
01:13
02:07
00:43

标签: sqlitedatetimetimesum

解决方案


因为您的总和超过 24 小时,time所以只返回不是一整天的部分。因此你得到一个结果而20:49不是44:49原样。显示总小时数和分钟数的一种方法是使用总和:20:4944:49 - 24:00printf

SELECT printf('%d:%02d', totsec / 3600, (totsec % 3600) / 60) AS total
FROM (
  SELECT sum(strftime('%s',appUsageTime)-strftime('%s','00:00')) AS totsec
  FROM offlineAppsUsageHistory 
  WHERE appId=3
) h

输出:

total
44:49

dbfiddle 上的演示


推荐阅读