Я думал, что это будет очень просто, но мне трудно найти какие-либо ответы!
I иметь стол поддержки, с полями Added_on
и closed_on
, которые отслеживают, когда заявки на поддержку были открыты и закрыты.
Я хотел бы выполнить запрос, который (closed_on - Added_on)
показать время, когда билет был открыт. Оба поля имеют формат метки времени
. Это не так просто, как я думал, что это будет ...
В идеале конечный результат будет X дней Y часов Z минут
, но я был бы рад получить всего несколько секунд или что-то в этом роде, я может, конечно, взять его оттуда.
Пример данных:
[id] [added_on] [closed_on]
1 2010-01-01 00:10:20 2010-01-02 00:10:20
1 2010-01-03 00:00:01 2010-01-03 13:30:01
Используйте:
SELECT CONCAT(DATEDIFF(closed_on, added_on),
' days ',
SUBSTRING_INDEX(TIMEDIFF(closed_on, added_on), ':', 1),
' hours ',
SUBSTR(TIMEDIFF(closed_on, added_on), INSTR(TIMEDIFF(closed_on, added_on), ':')+1, 2),
' minutes')
С данными вашего примера, это дает мне:
0 days 00 hours 00 minutes
0 days 13 hours 30 minutes
Вы можете использовать TIMESTAMPDIFF, чтобы получить разницу в секундах:
SELECT TIMESTAMPDIFF(SECOND,closed_on,added_on)...
Редактирование: Другой способ - использовать UNIX_TIMESTAMP:
SELECT UNIX_TIMESTAMP(closed_on)-UNIX_TIMESTAMP(added_on)...