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

MySQL DATE 與 INT 時間戳互轉完整指南(含 PHP 對照)

     編輯:MySQL 資料庫相關知識

MySQL 內建函數

DATE → UNIX_TIMESTAMP (INT)

SELECT UNIX_TIMESTAMP('1997-10-04 22:23:00');
-- 875996580
  • 無參數呼叫 UNIX_TIMESTAMP() 返回當前時間戳
  • 支援 DATE、DATETIME、TIMESTAMP 型別

INT → DATE (FROM_UNIXTIME)

SELECT FROM_UNIXTIME(875996580);
-- '1997-10-04 22:23:00'
  • 可搭配格式化:FROM_UNIXTIME(ts, '%Y-%m-%d %H:%i:%s')

PHP 對照函數

操作PHP 函數範例
INT → 格式化日期字串date()echo date('Y-m-d', $ts);
日期字串 → INTstrtotime()$ts = strtotime('1997-10-04 22:23:00');
DateTime 物件 → INTDateTime::getTimestamp()(new DateTime())->getTimestamp();
INT → DateTime 物件DateTime::setTimestamp()$dt = new DateTime(); $dt->setTimestamp($ts);

應用場景與注意點

  • 儲存建議:5.6.4+ DATETIME(6) 支援微秒,排序/範圍查詢原生支援,優於 INT
  • 時區一致性:資料庫 time_zone、PHP date.timezone、應用層統一設為 UTC,避免跨時區偏移
  • 分區鍵:按時間分區表建議用 TO_DAYS() 或 YEAR() 而非 UNIX_TIMESTAMP
  • 索引效能:WHERE ts BETWEEN UNIX_TIMESTAMP('2023-01-01') AND UNIX_TIMESTAMP('2023-01-31') 可用 INT 索引

快速轉換備忘錄

-- 當前時間戳
SELECT UNIX_TIMESTAMP();

-- 當前日期時間
SELECT NOW();           -- DATETIME
SELECT CURDATE();       -- DATE
SELECT CURTIME();       -- TIME

-- 日期運算
SELECT DATE_ADD(NOW(), INTERVAL 1 DAY);
SELECT DATE_SUB(NOW(), INTERVAL 3 HOUR);
SELECT DATEDIFF('2023-12-31', '2023-01-01');

掌握雙向轉換與時區控制,消除時間處理中的隱性 Bug。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved