首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 日期儲存最佳實踐:用 INT 儲存 Unix Timestamp 節省空間

     編輯:MySQL 綜合教學

MySQL 日期儲存最佳實踐:用 INT 儲存 Unix Timestamp 節省空間

傳統做法使用 DATETIME 或 TIMESTAMP 儲存日期時間,但對於資料量龐大的表,改用 INT 儲存 Unix 時間戳(秒數)可顯著節省儲存空間並提升查詢效能。

欄位定義對比

表結構示意圖

將原 DATETIME 欄位改為 INT UNSIGNED 儲存 Unix Timestamp。

常用查詢轉換範例

1. 讀取時轉換為可讀格式

SELECT uptime, FROM_UNIXTIME(uptime) FROM qlm_urlbridges;

查詢結果示意圖

2. 以日期條件篩選

SELECT uptime, FROM_UNIXTIME(uptime) 
FROM qlm_urlbridges 
WHERE uptime > UNIX_TIMESTAMP('2015-06-01 00:00:00');

Java 端日期轉換

將 Java Date 轉為秒級 Unix Timestamp 存入資料庫:

Integer timestamp = Integer.valueOf(
    Long.valueOf(new Date().getTime() / 1000).toString()
);

說明: getTime() 回傳毫秒數,除以 1000 轉為秒,再轉為 Integer 對應資料庫 INT 欄位。

優缺點權衡

方案儲存大小可讀性時區處理適用場景
DATETIME8 bytes高無時區資訊需保留原始輸入時區
TIMESTAMP4 bytes高自動轉換至 UTC需自動時區轉換
INT (Unix Timestamp)4 bytes低(需轉換)應用層處理大量資料、高效能查詢、跨時區應用

建議: 核心業務時間建議仍用 DATETIME/TIMESTAMP 保持可讀性;僅在日誌、追蹤、統計等大量寫入、較少直接人工查看的表中採用 INT 儲存。查詢時搭配 FROM_UNIXTIME()、UNIX_TIMESTAMP() 函式即可無縫轉換。

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