1

我有一个带有行和时间值的数据库。我想要那个时间值的总和(一般来说,格式是 %H:%M)。

我使用了这样的 SUM 值:

SELECT SUM(n_hores) FROM table;

但只有我得到 0.0。

我怎么能做到这一点?

谢谢

4

2 回答 2

2

格式中的时间值hh:mm是字符串,字符串不能有意义地求和。

您应该将这些时间值转换为一个数字(strftime(%s)返回自 1970-01-01 以来的秒数,因此您必须从一天的开始减去偏移量才能获得与您的时间值对应的秒数):

SELECT sum(strftime('%s', MyTime) - strftime('%s', '00:00')) FROM MyTable

您还可以将此秒数转换回时间字符串(time()hh:mm:ss格式返回):

SELECT time(sum(strftime('%s', MyTime) - strftime('%s', '00:00'))) FROM MyTable
于 2013-03-05T14:17:12.783 回答
1

您最好通过获取“自上一个纪元又名(现代纪元)以来的毫秒数”来减去两个日期。在 SQLite 中应该有一个函数,它返回自上一个 epoch 以来的毫秒数。一旦你发现了这一点,解决方案应该是简单的减法和转换为秒、分钟和/或小时。

于 2013-03-05T14:02:10.367 回答