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

问题描述 投票:1回答:2

我正在研究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

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

非常感谢!

sqlite time difference
2个回答
1
投票

你可以用strftime()time()这样做:

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

这导致:

06:00

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

- 最后获取计算的小时数和分钟数,并在它们之间添加冒号(假设您需要相同的格式)。

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

© www.soinside.com 2019 - 2024. All rights reserved.