【问题标题】:How to get sum of time values in SQLite DATETIME field如何在 SQLite DATETIME 字段中获取时间值的总和
【发布时间】:2020-05-29 05:51:35
【问题描述】:

如何在 SQLite 的日期时间字段中获取以 hh:mm 格式存储的时间值的总和?我已经尝试过sqlite: how to add total time hh:mm:ss where column datatype is DATETIME? 给出的解决方案,它给我的结果与我在 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

【问题讨论】:

    标签: sqlite datetime time sum


    【解决方案1】:

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

    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
    

    Demo on dbfiddle

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-01
      • 2019-09-26
      • 2021-08-31
      • 1970-01-01
      • 2012-01-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多