首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 依時間間隔顯示相對時間(幾秒/分/天/月前)

     編輯:MySQL 資料庫相關知識

PHP 實作相對時間顯示

function timeAgo($last_time) {
    if ($last_time > 2592000) {           // 30 天
        return intval($last_time / 2592000) . '個月前';
    } elseif ($last_time > 604800) {      // 7 天
        return intval($last_time / 604800) . '個星期前';
    } elseif ($last_time > 86400) {       // 1 天
        return intval($last_time / 86400) . '天前';
    } else {
        return '今天';
    }
}

// 使用範例
$diff = time() - strtotime($record['created_at']);
echo timeAgo($diff);  // 輸出:3天前、2個月前 等

MySQL 單純 SQL 寫法(5.7+)

SELECT
    CASE
        WHEN TIMESTAMPDIFF(MONTH, created_at, NOW()) >= 1
            THEN CONCAT(TIMESTAMPDIFF(MONTH, created_at, NOW()), '個月前')
        WHEN TIMESTAMPDIFF(WEEK, created_at, NOW()) >= 1
            THEN CONCAT(TIMESTAMPDIFF(WEEK, created_at, NOW()), '週前')
        WHEN TIMESTAMPDIFF(DAY, created_at, NOW()) >= 1
            THEN CONCAT(TIMESTAMPDIFF(DAY, created_at, NOW()), '天前')
        WHEN TIMESTAMPDIFF(HOUR, created_at, NOW()) >= 1
            THEN CONCAT(TIMESTAMPDIFF(HOUR, created_at, NOW()), '小時前')
        WHEN TIMESTAMPDIFF(MINUTE, created_at, NOW()) >= 1
            THEN CONCAT(TIMESTAMPDIFF(MINUTE, created_at, NOW()), '分鐘前')
        ELSE '剛剛'
    END AS time_ago
FROM articles;

進階版:支援「未來時間」與精確秒數

function formatRelativeTime($timestamp) {
    $diff = time() - $timestamp;
    $absDiff = abs($diff);
    $suffix = $diff > 0 ? '前' : '後';

    $intervals = [
        31536000 => '年',
        2592000  => '個月',
        604800   => '週',
        86400    => '天',
        3600     => '小時',
        60       => '分鐘',
        1        => '秒'
    ];

    foreach ($intervals as $seconds => $unit) {
        if ($absDiff >= $seconds) {
            return intval($absDiff / $seconds) . $unit . $suffix;
        }
    }
    return '剛剛';
}
提示: 資料庫儲存建議使用 TIMESTAMP 或 DATETIME 型別,避免使用 Unix 時間戳整數欄位,方便直接使用 SQL 日期函數運算。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved