Как получить сумму значений времени в поле SQLite DATETIME - PullRequest
0 голосов
/ 29 мая 2020

Как получить сумму значений времени, сохраненных в формате чч: мм в поле даты и времени в SQLite? Я пробовал решение, указанное в sqlite: как добавить общее время чч: мм: сс, где тип данных столбца - 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

1 Ответ

0 голосов
/ 29 мая 2020

Поскольку ваша сумма превышает 24 часа, time просто возвращает часть, которая не является целым днем. Таким образом, вы получите результат 20:49 вместо 44:49, поскольку 20:49 равно 44: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

Демо на dbfiddle

...