Страница 1 из 2

Преобразования данных при SQL запросе (SQLite, timediff)

СообщениеДобавлено: 21 ноя 2024, 16:28
polyus
Создал базу данных в DB Browser for SQLite. Добавил в табличку данные, в том числе типа дата-время текстом.
Код: Выделить всё
CREATE TABLE "process" (
   "id"   INTEGER,
   "user"   TEXT,
   "order"   TEXT,
   "detail"   TEXT,
   "time_begin"   TEXT,
   "time_end"   TEXT,
   "powder"   REAL,
   PRIMARY KEY("id")
);

Командой
Код: Выделить всё
SELECT * FROM `process`
все данные корректно выводятся как в программе DB Browser for SQLite, так и в панели HMI. Далее использую команду
Код: Выделить всё
SELECT
   timediff(`time_end`, `time_begin`) AS `time_diff`
FROM process;

Данный запрос отрабатывается в DB Browser for SQLite, но не дает результата в панели HMI. В чем может быть дело?

Данный запрос нужен для вычисления времени работы оператора над каждым заказом и деталью.

Re: Преобразования данных при SQL запросе (SQLite, timediff)

СообщениеДобавлено: 21 ноя 2024, 17:16
polyus
Разобрался. Видимо функции unixepoch() и timediff() в панели не работают. Использовал более универсальные strftime() и datetime(). Код запроса получился следующим:
Код: Выделить всё
select
    datetime(strftime('%s', `time_end`) - strftime('%s', `time_begin`), 'unixepoch') AS `date_diff`
from "process";

Re: Преобразования данных при SQL запросе (SQLite, timediff)

СообщениеДобавлено: 21 ноя 2024, 17:53
8bit
polyus писал(а):Создал базу данных в DB Browser for SQLite. Добавил в табличку данные, в том числе типа дата-время текстом.
Код: Выделить всё
CREATE TABLE "process" (
   "id"   INTEGER,
   "user"   TEXT,
   "order"   TEXT,
   "detail"   TEXT,
   "time_begin"   TEXT,
   "time_end"   TEXT,
   "powder"   REAL,
   PRIMARY KEY("id")
);

Командой
Код: Выделить всё
SELECT * FROM `process`
все данные корректно выводятся как в программе DB Browser for SQLite, так и в панели HMI. Далее использую команду
Код: Выделить всё
SELECT
   timediff(`time_end`, `time_begin`) AS `time_diff`
FROM process;

Данный запрос отрабатывается в DB Browser for SQLite, но не дает результата в панели HMI. В чем может быть дело?

Данный запрос нужен для вычисления времени работы оператора над каждым заказом и деталью.


код ошибки текстом то какой был ?
weintek_sql_request.png
weintek_sql_request.png (14.02 КБ) Просмотров: 155

Re: Преобразования данных при SQL запросе (SQLite, timediff)

СообщениеДобавлено: 21 ноя 2024, 18:00
polyus
no such function: timediff

Re: Преобразования данных при SQL запросе (SQLite, timediff)

СообщениеДобавлено: 21 ноя 2024, 18:03
8bit
polyus писал(а):В чем может быть дело?

polyus писал(а):no such function: timediff

Re: Преобразования данных при SQL запросе (SQLite, timediff)

СообщениеДобавлено: 21 ноя 2024, 18:04
8bit
polyus писал(а):Данный запрос отрабатывается в DB Browser for SQLite

SQLiteBrowser_no_such_function_timediff.png
SQLiteBrowser_no_such_function_timediff.png (14.68 КБ) Просмотров: 142

Re: Преобразования данных при SQL запросе (SQLite, timediff)

СообщениеДобавлено: 21 ноя 2024, 18:13
8bit
polyus писал(а):no such function: timediff

SQLite_time_diff_no_such_function_google.png
SQLite_time_diff_no_such_function_google.png (44.59 КБ) Просмотров: 137

Re: Преобразования данных при SQL запросе (SQLite, timediff)

СообщениеДобавлено: 21 ноя 2024, 18:19
polyus
Странно. Тут написано, что такая функция есть: https://www.sqlite.org/lang_datefunc.html
Не разобрался, как вставить картинку. Вот ссылка, что в программе это работало: https://ibb.co/qWLC6Fn
Изображение

Спасибо за ответ!

Re: Преобразования данных при SQL запросе (SQLite, timediff)

СообщениеДобавлено: 21 ноя 2024, 18:52
8bit
polyus писал(а):Изображение


у вас какая версия SQLite browser ?

Re: Преобразования данных при SQL запросе (SQLite, timediff)

СообщениеДобавлено: 22 ноя 2024, 13:49
polyus
DB Browser for SQLite v3.13.1