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

MySQL Unix 時間戳轉日期查詢:FROM_UNIXTIME + DATE_FORMAT 固定日期篩選

     編輯:MySQL 綜合教學

核心查詢:指定日期篩選

SELECT *
FROM `table_name`
WHERE DATE_FORMAT(FROM_UNIXTIME(`create_time`), '%Y-%m-%d') = '2024-01-15';

函數詳解

函數語法說明
FROM_UNIXTIMEFROM_UNIXTIME(unix_ts[, format])Unix 時間戳 (秒) → DATETIME / 格式化字串
DATE_FORMATDATE_FORMAT(dt, format)日期時間 → 指定格式字串
UNIX_TIMESTAMPUNIX_TIMESTAMP([dt])日期時間 → Unix 時間戳 (秒)

常用格式化符號

符號含義範例輸出
%Y4 位年份2024
%m2 位月份01
%d2 位日期15
%H24 制小時14
%i分鐘05
%s秒09
%W星期名稱Monday
%M月份名稱January

效能優化:避免函數包裹欄位導致索引失效

-- ❌ 慢:函數在欄位上,無法用索引
WHERE DATE_FORMAT(FROM_UNIXTIME(create_time), '%Y-%m-%d') = '2024-01-15'

-- ✅ 快:將條件轉為時間戳範圍,走索引
WHERE create_time >= UNIX_TIMESTAMP('2024-01-15 00:00:00')
  AND create_time <  UNIX_TIMESTAMP('2024-01-16 00:00:00')

原則:WHERE 條件盡量保持「欄位 運算子 常數」,讓優化器使用索引範圍掃描。

時區陷阱

  • FROM_UNIXTIME 受 time_zone 系統變數影響 (預設 SYSTEM)。
  • 應用層建議統一儲存 UTC 時間戳,查詢時在應用層轉換目標時區,或 SQL 中 CONVERT_TZ。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved