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

MySQL 日期時間與 UNIX 時間戳相互轉換:UNIX_TIMESTAMP()、FROM_UNIXTIME() 完全指南

     編輯:MySQL 資料庫相關知識

核心函數對照

轉換方向函數範例結果說明
日期時間 → 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' 或自訂格式

支援的輸入格式

  • `DATE` 字串:`'2024-01-01'`
  • `DATETIME` 字串:`'2024-01-01 12:30:45'`
  • `TIMESTAMP` 字串/數值
  • `YYMMDD` / `YYYYMMDD` 數值

查詢當天資料的高效寫法

-- 避免對欄位用函數導致索引失效
SELECT * FROM message
WHERE chattime >= UNIX_TIMESTAMP(CURDATE())
  AND chattime <  UNIX_TIMESTAMP(CURDATE() + INTERVAL 1 DAY)
ORDER BY id DESC;

原則:將常數轉換為欄位型別,而非對欄位做函數運算,保留索引效益。

PHP 對應函數

// UNIX時間戳 → 日期
date('Y-m-d H:i:s', 1156219870);

// 日期 → UNIX時間戳
strtotime('2024-01-01 12:00:00');

陷阱提醒

  • `UNIX_TIMESTAMP()` 對 `TIMESTAMP` 欄位直接回傳內部值,不做字串轉換。
  • 超出範圍 (1970~2037) 回傳 0,僅做基本範圍檢查。
  • 時區設定 (`time_zone`) 會影響轉換結果,跨時區應用請統一用 UTC 儲存。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved