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

MySQL Unix 時間戳與日期互轉函數:FROM_UNIXTIME / UNIX_TIMESTAMP

     編輯:MySQL 資料庫相關知識

MySQL 內建函數

Unix 時間戳 → 日期時間

FROM_UNIXTIME(unix_timestamp[, format])

-- 範例
SELECT FROM_UNIXTIME(1156219870);
-- 結果:2006-11-21 12:31:10

-- 指定格式
SELECT FROM_UNIXTIME(1156219870, '%Y-%m-%d %H:%i:%s');

日期時間 → Unix 時間戳

UNIX_TIMESTAMP([date])

-- 範例
SELECT UNIX_TIMESTAMP('2006-11-04 12:23:00');
-- 結果:1162623780

-- 當前時間戳
SELECT UNIX_TIMESTAMP();  -- 等同 UNIX_TIMESTAMP(NOW())

實戰範例:查詢當天記錄

-- 使用 FROM_UNIXTIME + DATE_FORMAT
SELECT * FROM message
WHERE DATE_FORMAT(FROM_UNIXTIME(chattime), '%Y-%m-%d') = DATE_FORMAT(NOW(), '%Y-%m-%d')
ORDER BY id DESC;

PHP 對應函數

操作MySQLPHP
時間戳 → 日期FROM_UNIXTIME()date('Y-m-d H:i:s', $ts)
日期 → 時間戳UNIX_TIMESTAMP()strtotime('2010-03-24 08:15:42')

效能與型別建議

  • 儲存建議用 DATETIME/TIMESTAMP:原生日期型別支援索引範圍查詢、日期運算,避免函數轉換導致索引失效。
  • 若必須用 INT 儲存時間戳,MySQL 8.0+ 可建立函數索引:
    ALTER TABLE tbl ADD INDEX idx_ctime ((FROM_UNIXTIME(ctime)));
  • TIMESTAMP 範圍 1970-2038,DATETIME 範圍 1000-9999 年,跨世紀應用請用 DATETIME。
  • 時區處理:TIMESTAMP 自動轉換時區,DATETIME 不轉換,應用層統一用 UTC 儲存最安全。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved