我在 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
,结果自然也会为 null,您必须确保它不是,或者使用 ifnull(`timestamp`,now())
来解决这个问题。
参见:http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_timediff
关于mysql - 将时间戳转换为 X 天 X 小时 X 分钟前,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7164522/