如何计算表格中的时差HH:MM?

时间:2019-04-04 15:11:43

标签: sqlite time difference

我正在使用sqlite制作飞行日志。

“航班”表具有以下结构:

CREATE TABLE flights (event_id INT PRIMARY KEY, date TEXT, offblock TEXT, onblock TEXT, duration TEXT;

我的目标是找到一条语句,我可以在“持续时间”列中插入该语句,以便在那里获得飞行时间。

INSERT INTO flights VALUES (1, "2019-04-04", "12:00", "18:00", XXX);

持续时间的结果应为06:00,如下所示:

SELECT duration from flights WHERE event_id = 1;

06:00

谁能给我一个工作提示,以最简单的方式做到这一点?

非常感谢!

2 个答案:

答案 0 :(得分:1)

您可以使用strftime()time()来做到这一点:

SELECT strftime('%H:%M', time(strftime('%s','18:00') - strftime('%s','12:00'), 'unixepoch'))

结果为:

06:00

答案 1 :(得分:0)

您想要做的事情很复杂,因为您有一个表示时间的字符串,而在sqlite中没有明确的类型。这很复杂,但是有可能,您可以执行以下操作:

-首先从字符串how to remove characters from a string in sqlite3 database?

中删除冒号

-然后将此字符串转换为int:Convert string to int inside WHERE clause of SQLITE statment

-您需要分别在小时和分钟上执行此操作,因为整数显然基于10,而分钟则基于60,因此您不能简单地将它们相减。您可以通过Substr(X,Y,Z)函数执行此操作:https://www.sqlite.org/lang_corefunc.html

-然后,您将进行算术运算以减去小时和分钟的最终时间-初始时间。 https://www.w3resource.com/sqlite/arithmetic-operators.php

-最后,请使用计算出的小时和分钟,并在它们之间添加一个冒号(假设您希望使用相同的格式)。

就像我说的那样,它有点沉重..但如果从长远来看,这种自动化可以节省时间,那是可行的。这应该足以让您到达那里。