SQLite: 计算两个给定日期之间的差距并以天、小时、分钟表示

10

我试图计算两个给定日期之间的天数、小时数和分钟数(如1天6小时17分钟),作为SQLite查询结果输出。在一个SQLitedatabase中,我的entryinentryout字段是datetime类型。我尝试使用juliandaystrftime的各种组合,但仍然遇到了困难。

我尝试使用strftime('%d %H:%M', julianday(entryout)-julianday(entryin))。对于一行数据,它们的值分别为2011-11-10 11:462011-11-09 09:00,但输出结果是25 14:46而不是01 02:46

请问有人能帮我解决这个问题,或者指点我正确的逻辑?谢谢!

1个回答

10

你可以尝试类似以下的方法:

SELECT
    CAST((strftime('%s', '2011-11-10 11:46') - strftime('%s', '2011-11-09 09:00')) / (60 * 60 * 24) AS TEXT) || ' ' ||
    CAST(((strftime('%s', '2011-11-10 11:46') - strftime('%s', '2011-11-09 09:00')) % (60 * 60 * 24)) / (60 * 60) AS TEXT) || ':' ||
    CAST((((strftime('%s', '2011-11-10 11:46') - strftime('%s', '2011-11-09 09:00')) % (60 * 60 * 24)) % (60 * 60)) / 60 AS TEXT);

很好的回答,Bill。为了改进它,不要担心太多的“((”,你可以使用/3600表示小时,%3600/60表示分钟,%60表示秒。 - sandino
如何获取年份和月份? - Engr Waseem Arain
@EngrWaseemArain 很遗憾,对于年份和月份来说,并没有简单、短暂的解决方案,因为一个月可能有28、29、30或31天,而一年可能有365或366天。 - Bill

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接