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