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

MySQL 時間戳與日期互轉函數大全:FROM_UNIXTIME、UNIX_TIMESTAMP 等

     編輯:MySQL 綜合教學

MySQL 時間戳與日期互轉函數大全

核心函數對照表

轉換方向MySQL 函數PHP 對應函數示例
Unix 時間戳 → 日期時間FROM_UNIXTIME(timestamp)date('Y-m-d H:i:s', $ts)SELECT FROM_UNIXTIME(1156219870); → 2006-06-22 12:31:10
日期時間 → Unix 時間戳UNIX_TIMESTAMP(datetime)strtotime('2006-11-04 12:23:00')SELECT UNIX_TIMESTAMP('2006-11-04 12:23:00'); → 1162633380
日期格式化DATE_FORMAT(date, format)date('Y-m-d', $ts)DATE_FORMAT(NOW(), '%Y-%m-%d')

常用查詢場景

1. 查詢當天記錄(聊天時間存 Unix 時間戳 chattime)
SELECT * FROM message
WHERE DATE_FORMAT(FROM_UNIXTIME(chattime), '%Y-%m-%d') = DATE_FORMAT(NOW(), '%Y-%m-%d')
ORDER BY id DESC;
2. 查詢最近 7 天記錄
SELECT * FROM message
WHERE FROM_UNIXTIME(chattime) >= DATE_SUB(NOW(), INTERVAL 7 DAY)
ORDER BY chattime DESC;
3. 日期時間運算
-- 當前時間加 1 天
SELECT DATE_ADD(NOW(), INTERVAL 1 DAY);

-- 兩時間差(秒)
SELECT TIMESTAMPDIFF(SECOND, '2023-01-01 00:00:00', NOW());

格式化符號速查

符號含義示例
%Y四位年份2024
%m兩位月份01-12
%d兩位日期01-31
%H24制小時00-23
%i分鐘00-59
%s秒00-59
%W星期名稱Monday

最佳實踐建議

  1. 存儲建議:優先用 DATETIME 或 TIMESTAMP 類型,避免用 INT 存 Unix 時間戳(失去類型語義、時區處理麻煩)
  2. 時區一致性:應用層、資料庫層、系統層時區保持一致,推薦統一 UTC 存儲,展示層轉換
  3. 索引友好:WHERE create_time >= '2024-01-01' 可用索引,WHERE DATE(create_time) = '2024-01-01' 會導致全表掃描
  4. 5.7+ 支援:DATETIME(3) 毫秒精度,NOW(3) 獲取毫秒時間
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved