我已经在mysql server 5.1中创建了一个存储过程。
如何将时间戳转换为表示该时间戳与现在之间的天、小时和分钟差的字符串?
例如,如果时间戳是5小时3分钟前,我将得到“5小时3分钟前”。

最佳答案

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

10-07 15:29