Как рассчитать разницу во времени ЧЧ: ММ в таблице? - PullRequest
1 голос
/ 04 апреля 2019

Я работаю над бортовым журналом в 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 ]

1 голос
/ 04 апреля 2019

Вы можете сделать это с strftime() и time() следующим образом:

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

, что приводит к:

06:00
0 голосов
/ 04 апреля 2019

То, что вы хотите сделать, довольно сложно, поскольку у вас есть строка, представляющая время, для которой нет явного типа в sqlite.Это довольно сложно, но возможно, и вы можете сделать следующее:

-Первое удаление двоеточия из строки: как удалить символы из строки в базе данных sqlite3?

-Тогда преобразуйте эту строку в int: Преобразуйте строку в int внутри предложения WHERE SQLite statment

-Это необходимо сделать для часов и минут отдельно, в виде целых чиселочевидно, основаны на 10, а минуты - на 60, так что вы не можете просто вычесть их.Это можно сделать с помощью функции Substr (X, Y, Z): https://www.sqlite.org/lang_corefunc.html

- Затем вы выполните арифметику, чтобы вычесть окончательное начальное время для часов и минут.https://www.w3resource.com/sqlite/arithmetic-operators.php

-Наконец возьмите рассчитанные часы и минуты и добавьте между ними двоеточие (при условии, что вам нужен тот же формат).

Как я уже сказал, это довольно тяжело ..но это выполнимо, если эта автоматизация экономит время в долгосрочной перспективе.Этого должно быть достаточно, чтобы доставить вас туда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...