t1(id, add_time INT),10 萬行數據// 1. PHP date() 轉換
SELECT add_time FROM t1 LIMIT 100000;
while ($row = fetch()) {
date('Y-m-d H:i', $row['add_time']);
}
// 2. 無轉換基準 (純獲取)
SELECT add_time FROM t1 LIMIT 100000;
while ($row = fetch()) { /* 直接輸出 */ }
// 3. MySQL FROM_UNIXTIME() 轉換
SELECT FROM_UNIXTIME(add_time, '%Y-%m-%d %H:%i') AS add_time FROM t1 LIMIT 100000;
while ($row = fetch()) { /* 直接輸出 */ }
| 模式 | 耗時 (秒) | 相對性能 |
|---|---|---|
| 無轉換 (基準) | ~0.30 | 1.0x |
| MySQL FROM_UNIXTIME() | ~0.45 | 1.5x (含網絡傳輸) |
| PHP date() | ~0.80 | 2.7x |
結論:數據庫層轉換比應用層快 ~40-50%,但不可忽略數據庫 CPU 開銷。
FROM_UNIXTIME(),代碼簡潔、性能較好date(),保護 DB CPU,利用 PHP 多進程並行SET time_zone = '+08:00',應用 date_default_timezone_set('PRC')-- 更靈活的格式化
DATE_FORMAT(FROM_UNIXTIME(ts), '%Y-%m-%d %H:%i:%s')
-- 時區轉換
CONVERT_TZ(FROM_UNIXTIME(ts), '+00:00', '+08:00')