sqlite: как добавить общее время чч: мм: сс, где тип данных столбца - DATETIME?

COLUMN

Это снимок моего столбца в sqlite db, и его тип данных в схеме определен как DATETIME. Теперь я хочу применить некоторую функцию агрегирования, например sum(), для вычисления суммы этого столбца.

запрос, который я использовал:

select sum(total_expend_time) from timetable;, но в результате возвращает 0.0.


person Prateek    schedule 03.01.2013    source источник
comment
Если вы ищете быстрый ответ, то вот что, наконец, помогло мне SELECT time(sum(strftime('%s', total_expend_time) - strftime('%s', '00:00:00')), 'unixepoch') FROM timetable   -  person Prateek    schedule 15.01.2013


Ответы (2)


SQLite не имеет собственного типа данных DATETIME; значения хранятся в виде строк.

Вы должны использовать встроенную функцию даты для преобразования этих строк в количество секунд, прежде чем вы сможете добавить их:

SELECT sum(strftime('%s', total_expend_time) -
           strftime('%s', '00:00:00'       ))
FROM timetable

Если вы хотите отформатировать это как время, вы должны преобразовать его обратно после этого:

SELECT time(sum(...), 'unixepoch') FROM timetable
person CL.    schedule 03.01.2013
comment
что это вернет SELECT sum(strftime('%s', total_expend_time) - strftime('%s', '00:00:00' )) FROM timetable количество секунд, так как в моем случае возвращается 1770, что это за значение. - person Prateek; 03.01.2013
comment
Да, это то, что я написал, и то, что написано в документации к %s. - person CL.; 03.01.2013

Это работает идеально для меня:

SELECT time(
           sum( strftime('%s', total_expend_time) ),
           'unixepoch'
           )
FROM timetable

спасибо КЛ!

person Deyan Petkov    schedule 03.02.2021