#mysql #sql
#mysql #sql
Вопрос:
У меня есть два столбца временных меток, и я хочу получить разницу между ними в этом формате: 5 дней 3 часа 24 минуты 30 секунд
Ответ №1:
SELECT SEC_TO_TIME( TIMESTAMPDIFF(
SECOND , '2012-06-06 15:20:18', '2012-06-09 13:13:55' ) )
попробуйте это, вы можете получить значение hh: mm: ss
Ответ №2:
Используйте этот код mysql:
SELECT concat(floor(TIMESTAMPDIFF(SECOND,`timevalue`,now())/(3600*24)),'days ',
floor((TIMESTAMPDIFF(SECOND,`timevalue`,now()) - (floor(TIMESTAMPDIFF(SECOND,`timevalue`,now())/(3600*24))*3600*24))/3600),'hours ',
floor((TIMESTAMPDIFF(SECOND,`timevalue`,now()) - (floor((TIMESTAMPDIFF(SECOND,`timevalue`,now()) - (floor(TIMESTAMPDIFF(SECOND,`timevalue`,now())/(3600*24))*3600*24))/3600)*3600))/60),'minutes ',
(TIMESTAMPDIFF(SECOND,`timevalue`,now()) - (floor((TIMESTAMPDIFF(SECOND,`timevalue`,now()) - (floor((TIMESTAMPDIFF(SECOND,`timevalue`,now()) - (floor(TIMESTAMPDIFF(SECOND,`timevalue`,now())/(3600*24))*3600*24))/3600)*3600))/60)*60)),'seconds ')
FROM `time_tbl`
Здесь time_tbl
имя вашей таблицы и timevalue
имя вашего атрибута. Удачного кодирования.
Ответ №3:
Вы можете использовать что-то вроде этого:
SELECT CONCAT(
FLOOR(HOUR(TIMEDIFF('2010-01-06 08:46:00', '2010-01-01 12:30:20')) / 24), ' days ',
MOD(HOUR(TIMEDIFF('2010-01-06 08:46:00', '2010-01-01 12:30:20')), 24), ' hours ',
MINUTE(TIMEDIFF('2010-01-06 08:46:00', '2010-01-01 12:30:20')), ' minutes ',
SECOND(TIMEDIFF('2010-01-06 08:46:00', '2010-01-01 12:30:20')),' seconds') as dif
В mysql нет ничего подобного встроенному. Замените ваши значения tiemstamp везде, где требуется.