如何计算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
我正在用 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