MySQL отметка ВРЕМЕНИ дням, часам - PullRequest
3 голосов
/ 17 февраля 2012

Просматривая документацию по MySQL, я не вижу опции в DATE_FORMAT (на которую ссылается TIME_FORMAT) для преобразования значения времени MySQL (например: 172: 04: 11) во что-то вроде "7 дней, 4 часа".

Есть ли способ (в MySQL) форматировать время таким образом? Или я должен просто работать с возвращенным значением ВРЕМЕНИ в PHP?

Ответы [ 3 ]

1 голос
/ 12 апреля 2012

Я ненавижу отвечать на свой вопрос, но чтобы прояснить ситуацию, функция TIME () в MySQL усекает значения до 838: 59: 59, что явно нежелательно.

Решение, которое я нашел, состояло в том, чтобы использовать это:

TIMESTAMPDIFF(SECOND,date_old,date_newer) 

У которого нет такой же проблемы усечения.Как только у вас появятся секунды, используйте серверные сценарии для форматирования времени, как в моем исходном запросе.Ответьте, если хотите увидеть пример на PHP, или напишите свой.:)

Надеюсь, это полезно?

0 голосов
/ 12 апреля 2012
SELECT CONCAT( FLOOR(TIME_FORMAT('172:04:11', '%H')/24), ' days ', (TIME_FORMAT('172:04:11', '%H') MOD 24),   ' hours ', TIME_FORMAT('172:04:11', '%i'), ' minutes ', TIME_FORMAT('172:04:11', '%s'), ' seconds')
0 голосов
/ 17 февраля 2012

Переменная типа TIME наиболее вероятно будет использоваться для представления временного интервала, и вы можете использовать функцию addtime() для добавления этого интервала к заданной переменной типа DATETIME.

SELECT ADDTIME( NOW(), '172:04:11' );

работает должным образом, однако, если вам нужно отобразить этот временной интервал в виде дней и часов, просто используйте:

SELECT CONCAT( 
  FLOOR(HOUR('172:04:11')/24), 
  ' days, ',
  HOUR('172:04:11') MOD 24, 
  ' hours.');
...