我有一个包含两列的表格,其中包含日期时间,特别是time_started
和time_ended
。我想确定这两次定义的持续时间并总结所有持续时间。
这是我的尝试:
select strftime('%H:%M:%S.%f', sum(duration), 'unixepoch')
from (
select strftime('%s', time_ended) - strftime('%s', time_started) as duration
from mytable
)
这不起作用的原因是strftime('%s', time_started)
返回seconds since 1970-01-01的整数数。这意味着我将失去毫秒。
有没有办法获得自1970-01-01以来的 小数 秒数?
请注意,日期时间值的格式与此示例相同:“2013-04-24 14:57:30.661259”。
更新,现在使用julianday()
,@ LS_dev在答案中的建议:
select strftime('%H:%M:%f', sum(duration))
from (
select julianday(time_ended) - julianday(time_started) as duration
from mytable
)
但仍存在两个问题:
strftime()
的限制答案 0 :(得分:1)
使用JULIANDAY
:
select duration*24*60*60
from (
select JULIANDAY(time_ended) - JULIANDAY('%s', time_started) as duration
from mytable
)
编辑:“为你完成所有工作”的解决方案:
SELECT *, TIME("00:00", CAST(Duration AS INT)||' seconds')||SUBSTR(Duration-CAST(Duration AS INT), 2)
FROM (
SELECT *, (JULIANDAY(time_ended) - JULIANDAY(time_started))*60*60*24 as Duration
FROM mytable
)