| 轉換方向 | 函數 | 範例 | 結果說明 |
|---|---|---|---|
| 日期時間 → UNIX 時間戳 | UNIX_TIMESTAMP()UNIX_TIMESTAMP(date) | SELECT UNIX_TIMESTAMP('2006-11-04 12:23:00'); | 回傳 1970-01-01 以來秒數 (無號整數) |
| UNIX 時間戳 → 日期時間 | FROM_UNIXTIME(unix_ts)FROM_UNIXTIME(unix_ts, format) | SELECT FROM_UNIXTIME(1156219870); | 回傳 'YYYY-MM-DD HH:MM:SS' 或自訂格式 |
-- 避免對欄位用函數導致索引失效
SELECT * FROM message
WHERE chattime >= UNIX_TIMESTAMP(CURDATE())
AND chattime < UNIX_TIMESTAMP(CURDATE() + INTERVAL 1 DAY)
ORDER BY id DESC;
原則:將常數轉換為欄位型別,而非對欄位做函數運算,保留索引效益。
// UNIX時間戳 → 日期
date('Y-m-d H:i:s', 1156219870);
// 日期 → UNIX時間戳
strtotime('2024-01-01 12:00:00');