我在MySQL Server 5.1中创建了一个存储过程.
如何将时间戳转换为表示该时间戳与现在之间的天,小时和分钟差异的字符串?
例如,如果时间戳是5小时3分钟前,我将得到'5小时3分钟前'.
select date_format(timediff(current_timestamp,last_timestamp),
'%k hours, %i minutes, %s seconds ago');
Run Code Online (Sandbox Code Playgroud)
如果您想要更多奢侈品,您可以做以下事情:
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')
)
Run Code Online (Sandbox Code Playgroud)
还有一些额外的空间.
如果其中一个时间戳null自然结果也将为null,则必须确保它不是,或者用于ifnull(`timestamp`,now())修复它.
请参阅:http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_timediff