powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / TIMEDIFF ругается
18 сообщений из 18, страница 1 из 1
TIMEDIFF ругается
    #39160012
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
TIMEDIFF(MAX(transshipment_finish_time), time_finish_plan) AS delta_finish_time,


Выдает ошибку: Invalid argument to time encode.
Поле time_finish_plan имеет тип DATETIME.
transshipment_finish_time тоже тип DATETIME.
Если написать
Код: sql
1.
TIMEDIFF(NOW(), NOW()) AS delta_finish_time,


то выдает 0, ошибки нет.
...
Рейтинг: 0 / 0
TIMEDIFF ругается
    #39160020
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возможно, разница между значениями превышает 840 часов.
...
Рейтинг: 0 / 0
TIMEDIFF ругается
    #39160025
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Единственное, что приходит на ум - это то, что результат MAX() приводится к некоему не-DATETIME типу. Попробуй явное приведение типа:
Код: sql
1.
TIMEDIFF(CAST(MAX(transshipment_finish_time) AS DATETIME), time_finish_plan) AS delta_finish_time,
...
Рейтинг: 0 / 0
TIMEDIFF ругается
    #39160083
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,
я пробовал так:
Код: sql
1.
TIMEDIFF(NOW(), time_finish_plan) AS delta_finish_time,


та же ошибка.
...
Рейтинг: 0 / 0
TIMEDIFF ругается
    #39160087
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvlad , выясните, какой операнд вызывает недовольство функции - первый, второй или оба. За-CAST-уйте оба, наконец. А заодно проверьте, может, разница действительно превышает 839 часов.
...
Рейтинг: 0 / 0
TIMEDIFF ругается
    #39160124
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,

закастовал. Не помогает. Разница там сейчас двое суток, но теоретически может выйти за предел 840 часов.
Есть ли другой способ, не ограниченный этим временем?
...
Рейтинг: 0 / 0
TIMEDIFF ругается
    #39160144
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvladЕсть ли другой способ, не ограниченный этим временем?Как вариант - сгородить гибрид DATEDIFF и TIMEDIFF.
Или использовать TIMESTAMPDIFF.
...
Рейтинг: 0 / 0
TIMEDIFF ругается
    #39160150
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvladЕсть ли другой способ, не ограниченный этим временем? https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_timestampdiff
...
Рейтинг: 0 / 0
TIMEDIFF ругается
    #39160151
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvladРазница там сейчас двое суток
А покажите фактические значения, т.е. MAX(transshipment_finish_time), time_finish_plan
...
Рейтинг: 0 / 0
TIMEDIFF ругается
    #39160206
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvladзакастовал. Не помогает.Не помогает - это имеется в виду, что даже
Код: sql
1.
TIMEDIFF(CAST(MAX(transshipment_finish_time) AS DATETIME), CAST(time_finish_plan AS DATETIME)) AS delta_finish_time,

сообщает об Invalid argument to time encode?
...
Рейтинг: 0 / 0
TIMEDIFF ругается
    #39160320
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akinasvnvladзакастовал. Не помогает.Не помогает - это имеется в виду, что даже
Код: sql
1.
TIMEDIFF(CAST(MAX(transshipment_finish_time) AS DATETIME), CAST(time_finish_plan AS DATETIME)) AS delta_finish_time,

сообщает об Invalid argument to time encode?
Да, даже это сообщает об ошибке.
Значения следующие:
MAX(transshipment_finish_time) = 27.01.2016 4:26:48
time_finish_plan = 26.01.2016
...
Рейтинг: 0 / 0
TIMEDIFF ругается
    #39160377
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvladtime_finish_plan = 26.01.2016
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
mysql> create table test (dt datetime);
Query OK, 0 rows affected (0.84 sec)

mysql> insert into test (dt) select '2016.01.26';
Query OK, 1 row affected (0.01 sec)
Records: 1  Duplicates: 0  Warnings: 0

mysql> select dt from test;
+---------------------+
| dt                  |
+---------------------+
| 2016-01-26 00:00:00 |
+---------------------+
1 row in set (0.00 sec)

Читай. Думай.
...
Рейтинг: 0 / 0
TIMEDIFF ругается
    #39160392
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
TIMESTAMPDIFF(MINUTE, MAX(transshipment_finish_time), time_finish_plan) AS delta_finish_time,


Получается минус 1706 минут. Теперь это надо превратить в "- 1 день 4 часов 26 минут".
...
Рейтинг: 0 / 0
TIMEDIFF ругается
    #39160399
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvladMAX(transshipment_finish_time) = 27.01.2016 4:26:48
time_finish_plan = 26.01.2016Так это же не DATETIME.
...
Рейтинг: 0 / 0
TIMEDIFF ругается
    #39160410
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft , не подсказывай :)
...
Рейтинг: 0 / 0
TIMEDIFF ругается
    #39160428
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Получилось вот так:
Код: sql
1.
2.
3.
CONCAT(TIMESTAMPDIFF(MINUTE, MAX(transshipment_finish_time), time_finish_plan) DIV 1440, ' дн. ',
            TIMESTAMPDIFF(MINUTE, MAX(transshipment_finish_time), time_finish_plan) MOD 1440 DIV 60, ' час. ',
            TIMESTAMPDIFF(MINUTE, MAX(transshipment_finish_time), time_finish_plan) MOD 60, ' мин.') AS delta_finish_time,
...
Рейтинг: 0 / 0
TIMEDIFF ругается
    #39160430
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftsvnvladMAX(transshipment_finish_time) = 27.01.2016 4:26:48
time_finish_plan = 26.01.2016Так это же не DATETIME.
Ну поле-то DATETIME. Просто во времени нули.
...
Рейтинг: 0 / 0
TIMEDIFF ругается
    #39160436
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftsvnvladMAX(transshipment_finish_time) = 27.01.2016 4:26:48
time_finish_plan = 26.01.2016Так это же не DATETIME.
В дельфи в сетке так отображается, в MySQL менеджере вот так 2016-01-26 00:00:00
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / TIMEDIFF ругается
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]