PHP或SQL中经过的时间格式

时间:2011-11-09 06:25:07

标签: php mysql timestamp

从Stackoverflow或Facebook这样的数据库中获取元组的时间有多好?当<经过1分钟显示秒数,不到1小时显示分钟等。这可能是在MySQL中具有比PHP格式更好的性能吗?

2 个答案:

答案 0 :(得分:3)

没有。这个PHP真的最合适 - 你可以从数据库中获取时间戳值(最终)将其转换为Unix epoch 格式:

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将相对时间戳(以秒为单位)正确更改为使用不同单位(分钟,小时,天,周,月,年等......)的相对时间戳。

答案 1 :(得分:0)

确保您还有一个字段,用于存储在数据库表中创建元组的时间,然后使用简单的算术(或MySQL的日期/时间函数,读取您的文档),选择差异(转换为秒)。然后,PHP端将根据该秒值对要显示的字符串进行编码(对于PHP来说,它比数据库服务器更轻,我猜)。