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

Работа с панелями оператора Weintek - подключение, программирование, совмещение с ПЛК

Модераторы: kiv, 8bit, VanMo

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

Сообщение polyus » 21 ноя 2024, 16:28

Создал базу данных в 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. В чем может быть дело?

Данный запрос нужен для вычисления времени работы оператора над каждым заказом и деталью.
polyus
 
Сообщения: 9
Зарегистрирован: 07 июл 2020, 14:41

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

Сообщение polyus » 21 ноя 2024, 17:16

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

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

Сообщение 8bit » 21 ноя 2024, 17:53

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 КБ) Просмотров: 153
Хороший вопрос содержит половину ответа - A good question contains half the answer
Аватара пользователя
8bit
 
Сообщения: 1180
Зарегистрирован: 20 апр 2020, 19:07

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

Сообщение polyus » 21 ноя 2024, 18:00

no such function: timediff
polyus
 
Сообщения: 9
Зарегистрирован: 07 июл 2020, 14:41

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

Сообщение 8bit » 21 ноя 2024, 18:03

polyus писал(а):В чем может быть дело?

polyus писал(а):no such function: timediff
Хороший вопрос содержит половину ответа - A good question contains half the answer
Аватара пользователя
8bit
 
Сообщения: 1180
Зарегистрирован: 20 апр 2020, 19:07

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

Сообщение 8bit » 21 ноя 2024, 18:04

polyus писал(а):Данный запрос отрабатывается в DB Browser for SQLite

SQLiteBrowser_no_such_function_timediff.png
SQLiteBrowser_no_such_function_timediff.png (14.68 КБ) Просмотров: 140
Хороший вопрос содержит половину ответа - A good question contains half the answer
Аватара пользователя
8bit
 
Сообщения: 1180
Зарегистрирован: 20 апр 2020, 19:07

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

Сообщение 8bit » 21 ноя 2024, 18:13

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

SQLite_time_diff_no_such_function_google.png
SQLite_time_diff_no_such_function_google.png (44.59 КБ) Просмотров: 135
Хороший вопрос содержит половину ответа - A good question contains half the answer
Аватара пользователя
8bit
 
Сообщения: 1180
Зарегистрирован: 20 апр 2020, 19:07

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

Сообщение polyus » 21 ноя 2024, 18:19

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

Спасибо за ответ!
polyus
 
Сообщения: 9
Зарегистрирован: 07 июл 2020, 14:41

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

Сообщение 8bit » 21 ноя 2024, 18:52

polyus писал(а):Изображение


у вас какая версия SQLite browser ?
Хороший вопрос содержит половину ответа - A good question contains half the answer
Аватара пользователя
8bit
 
Сообщения: 1180
Зарегистрирован: 20 апр 2020, 19:07

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

Сообщение polyus » 22 ноя 2024, 13:49

DB Browser for SQLite v3.13.1
polyus
 
Сообщения: 9
Зарегистрирован: 07 июл 2020, 14:41

След.

Вернуться в Weintek

Кто сейчас на конференции

Сейчас этот форум просматривают: Bing [Bot], Google [Bot] и гости: 10