Преобразовать метку времени в X дней X часов X минут назад - PullRequest
3 голосов
/ 23 августа 2011

Я создал хранимую процедуру в MySQL Server 5.1.

Как преобразовать метку времени в строку, представляющую разницу в днях, часах и минутах между этой меткой времени и сейчас?

Например, если метка времени равна 5 часам и 3 минутам назадЯ получу «5 часов 3 минуты назад».

Ответы [ 2 ]

7 голосов
/ 23 августа 2011
select date_format(timediff(current_timestamp,last_timestamp), 
'%k hours, %i minutes, %s seconds ago');

Если вы хотите больше роскоши, вы можете сделать что-то вроде:

select concat
  (
  if(date_format(timediff(ts1,ts2)'%k')='0'
     ,'',date_format(timediff(ts1,ts2)'%k hours'),
  if(date_format(timediff(ts1,ts2)'%i')='0'
     ,'',date_format(timediff(ts1,ts2)'%k minutes'),
  if(date_format(timediff(ts1,ts2)'%s')='0'
     ,'',date_format(timediff(ts1,ts2)'%k seconds')
  ) 

Плюс несколько лишних пробелов здесь и там.
Если одна из меток времени равна null, естественно, результаттакже будет нулевым, вы должны будете убедиться, что это не так, или используйте ifnull(`timestamp`,now()), чтобы исправить это.

См .: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_timediff

2 голосов
/ 23 августа 2011

Взгляните на справочную страницу MySQL для функций даты и времени по адресу

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_from-unixtime

Редактировать: поскольку я предполагаю, что вы используете метки времени Unix, путь будет

FROM_UNIXTIME(timestamp, format)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...