вычитание временных меток

Я думал, что это будет очень просто, но мне трудно найти какие-либо ответы!

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   
7
задан OMG Ponies 23 August 2010 в 01:01
поделиться

2 ответа

Используйте:

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
3
ответ дан 7 December 2019 в 14:26
поделиться

Вы можете использовать TIMESTAMPDIFF, чтобы получить разницу в секундах:

SELECT TIMESTAMPDIFF(SECOND,closed_on,added_on)...

Редактирование: Другой способ - использовать UNIX_TIMESTAMP:

SELECT UNIX_TIMESTAMP(closed_on)-UNIX_TIMESTAMP(added_on)...
1
ответ дан 7 December 2019 в 14:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: