从Stackoverflow或Facebook这样的数据库中获取元组所用时间的好方法是什么?当小于1分钟时显示秒数,小于1小时显示分钟等。这是否可以在MySQL中具有比PHP格式化更好的性能?
发布于 2011-11-09 14:31:08
不是的。这个PHP非常适合--你可以从数据库中获取时间戳值,然后(最终)把它转换成Unix的纪元格式:
SELECT UNIX_TIMESTAMP(`when`) FROM `posts` ORDER BY `id` DESC LIMIT 1;然后,计算差值。计算差异,特别是在将其划分为范围时,您可能会要求MySQL做一些实际上不太适合做的事情。
最终,您还可以考虑将处理工作传递给用户-只需尝试使用JavaScript根据时间戳确定差异。这样,您就可以只使用PHP显示数据库中的值,而不需要在PHP端进行进一步的处理。
使用JavaScript (jQuery)的解决方案
此解决方案将处理工作转移到用户,并允许同时不断更新时间戳。JavaScript可能如下所示:
jQuery('span[data-timestamp]').each(function(){
var el = jQuery(this);
var then = Math.floor(el.attr('data-timestamp'));
var updateTime = function(){
var now = Math.floor((new Date()) / 1000);
el.html((now - then) + ' seconds ago');
};
setInterval(updateTime, 1000);
updateTime();
});然后每个代码片段看起来都是这样的:
<span data-timestamp="1320821800"></span>将被转换为相对时间戳,并每隔一秒更新一次(参见this jsfiddle)。如果你想使用它,只需确保updateTime正确地将以秒为单位的相对时间戳更改为使用不同单位(分钟、小时、天、周、月、年等)的时间戳。
发布于 2011-11-09 14:32:36
确保您还有一个字段来存储在数据库表中创建元组的时间,然后使用简单的算法(或MySQL的日期/时间函数,阅读您的文档),选择差异(转换为秒)。然后,PHP端将根据该秒值对要显示的字符串进行编码(我想,PHP这样做比数据库服务器更轻便)。
https://stackoverflow.com/questions/8061167
复制相似问题