Это мой стол:TimeDiff от вычесть значение времени
+----------+---------------------+
| estimate | timestamp |
+----------+---------------------+
| 05:00:00 | 2015-12-02 13:35:14 |
+----------+---------------------+
1 row in set (0.00 sec)
Я пытаюсь выполнить запланированное задание для создания лишних автомат Количество на строки каждый час, чтобы вычитать время, которое имеет прошлое от расчетного времени.
Я могу запустить запланированное задание и использовать timediff для вычисления времени, прошедшего с тех пор, но я не могу вычесть timediff с расчетного времени.
Я догадываюсь, что mysql не заботится о том, чтобы я хотел, чтобы расчетный столбец времени указывался как период времени. вместо этого он просто показывает мне время без даты.
select timediff(now(),timestamp) from t1;
это дает мне разницу во времени, что мне нужно:
+---------------------------+
| timediff(now(),timestamp) |
+---------------------------+
| 00:27:03 |
+---------------------------+
1 row in set (0.00 sec)
, но когда я это сделать:
select estimate-timediff(now(),timestamp) as timeleft from t1;
результат является:
+----------+
| timeleft |
+----------+
| 46568 |
+----------+
1 row in set (0.01 sec)
, что я хотел бы получить:
+----------+
| timeleft |
+----------+
| 04:32:57 |
+----------+
1 row in set (0.01 sec)
Времена могут быть немного в моем примере, очевидно, из-за timediff(), но, надеюсь, вы понимаете мою проблему. Должно быть простое решение, которое мне не хватает, но я потратил полдня на googleing, чтобы добраться до этого момента, но timediff просто не сократит меня.
Пожалуйста, спасибо!
PS. Я еще не нашел решение, но я думаю, что нашел, что может вызвать проблему. Обрезание выполняется с использованием столбца «оценка» абсолютных значений »не использует секунды, поскольку это абсолютная величина, и результат полностью неправильный.
mysql> select abs(estimate) from t1;
+----------+
| abs(estimate) |
+----------+
| 50000 |
+----------+
1 row in set (0.00 sec)
и
mysql> select abs(timediff(now(),timestamp)) from t1;
+--------------------------------+
| abs(timediff(now(),timestamp)) |
+--------------------------------+
| 2318 |
+--------------------------------+
1 row in set (0.00 sec)
Так есть простой способ заставить MySQL использовать секунды на колонке времени? или что-то не так с моей таблицей, и формат оценки неправильный?
благодаря Rahautos, вы можете удалить другие комментарии (я удалил мой уже тогда я могу upvote и aprove этого решения.. с вашей помощью я вышел с этим решением: 'mysql> select *, timediff (now(), timestamp), sec_to_time (time_to_sec (оценка) -time_to_sec (timediff (now(), timestamp))) из t1;', но это довольно длинный и глупый. 'select timediff (оценка, timediff (now(), timestamp)) как время для m t1; 'работает блестяще и является простым решением, которое я искал ... – Gusmar
, если бы я мог потерять фракции сейчас ... результат будет в этом формате:' 04: 10: 42.000', но мне бы хотелось чтобы быть следующим: '04: 10: 42' .... но это не имеет значения, поскольку я могу просто игнорировать их с помощью select. – Gusmar