我正在使用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
谁能给我一个工作提示,以最简单的方式做到这一点?
非常感谢!
答案 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
-最后,请使用计算出的小时和分钟,并在它们之间添加一个冒号(假设您希望使用相同的格式)。
就像我说的那样,它有点沉重..但如果从长远来看,这种自动化可以节省时间,那是可行的。这应该足以让您到达那里。