php - PHP 或 SQL 中耗时格式

标签 php mysql timestamp

从像 Stackoverflow 或 Facebook 这样的数据库中获取元组耗时的好方法是什么?当经过 < 1 分钟时显示经过的秒数,小于 1 小时时显示分钟等。这在 MySQL 中是否比在 PHP 中格式化具有更好的性能?

最佳答案

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

关于php - PHP 或 SQL 中耗时格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8061167/

相关文章:

php - Ionic + Angular + PHP 未定义属性:insert.php 中的 stdClass::$variable

php - 为什么评论没有上传到 MySQL 数据库?

PHP - 复选框值/数据库插入和 if(isset())

Postgresql - 如何将一个时间戳转换为另一个更接近时间的时间戳?

sql - 时间戳到日期 SQL

sql - Hive 中的时间戳解析

php - 如何使用 PHP 单击 DOM 元素并将其作为变量传递?

php - 从excel导入数据时去除特殊字符

mysql - 需要正则表达式来查找 "xxxx",,,,, 的 "yyyy",,,, 并删除

java - 如何使用 JQuery + Ajax 发送将由 RestFulServices 使用的 JSON 对象数据?