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

How to calculate time differences HH:MM in a table?

我正在用 sqlite 编写飞行日志。

"flights"-table的结构如下:

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

我的目标是找到一个可以插入到 "duration" 列中的语句,这样我就可以在该列中获得飞行时间。

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 中没有明确的类型。这很复杂,但这是可能的,您可以执行以下操作:

-先去掉字符串中的冒号: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

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

就像我说的,它有点重..但如果这种自动化在较长的 运行 中节省时间,它是可行的。这应该足以让你到达那里。

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

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

这导致:

06:00