从Stackoverflow或Facebook这样的数据库中获取元组的时间有多好?当<经过1分钟显示秒数,不到1小时显示分钟等。这可能是在MySQL中具有比PHP格式更好的性能吗?
答案 0 :(得分:3)
没有。这个PHP真的最合适 - 你可以从数据库中获取时间戳值和(最终)将其转换为Unix epoch 格式:
SELECT UNIX_TIMESTAMP(`when`) FROM `posts` ORDER BY `id` DESC LIMIT 1;
和然后计算差异。计算差异,特别是在将其划分为范围时,您需要MySQL做一些不太适合的事情。
最终,您还可以考虑将处理工作传递给用户 - 只需尝试使用JavaScript 即可根据时间戳确定差异。这样你就可以使用PHP来显示数据库中的值,而无需在PHP方面进一步处理。
此解决方案将处理工作转移到用户,并允许同时不断更新时间戳。 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
将相对时间戳(以秒为单位)正确更改为使用不同单位(分钟,小时,天,周,月,年等......)的相对时间戳。
答案 1 :(得分:0)
确保您还有一个字段,用于存储在数据库表中创建元组的时间,然后使用简单的算术(或MySQL的日期/时间函数,读取您的文档),选择差异(转换为秒)。然后,PHP端将根据该秒值对要显示的字符串进行编码(对于PHP来说,它比数据库服务器更轻,我猜)。