将时间戳转换为X天X小时X分钟前

时间:2011-08-23 16:44:58

标签: mysql timestamp

我在MySQL Server 5.1中创建了一个存储过程。

如何将时间戳转换为表示该时间戳与现在之间的天,小时和分钟差异的字符串?

例如,如果时间戳是5小时3分钟前,我会得到'5小时3分钟前'。

2 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:2)

处查看日期和时间函数的MySQL参考页面

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

编辑:因为我假设你使用的是Unix时间戳,所以要走的路是

FROM_UNIXTIME(timestamp, format)