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

MySQL 從 Unix 時間戳查詢指定日期數據:FROM_UNIXTIME + DATE_FORMAT 組合拳

     編輯:MySQL 資料庫相關知識

表字段 createtime 存 Unix 時間戳(整數秒),需查某一天的所有記錄。

標準寫法

SELECT * FROM tbl
WHERE DATE_FORMAT(FROM_UNIXTIME(createtime), '%Y-%m-%d') = '2014-01-02';

函數解析

  • FROM_UNIXTIME(unix_timestamp, [format]):時間戳 → 日期時間值/字串。
    無 format 回傳 DATETIME;有 format 回傳格式化字串。
  • DATE_FORMAT(date, format):日期值 → 指定格式字串。

組合效果:時間戳 → DATETIME → 'YYYY-MM-DD' 字串 → 與目標日期字串比較。

常用格式符對照表

符號含義範例
%Y4 位年份2014
%m2 位月份01
%d2 位日期02
%H24 制小時14
%i分鐘30
%s秒59
%W星期名Thursday
%M月份名January

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

上述寫法會全表掃描。最佳實踐:將查詢條件轉換為時間戳範圍,走索引:

SELECT * FROM tbl
WHERE createtime >= UNIX_TIMESTAMP('2014-01-02 00:00:00')
  AND createtime <  UNIX_TIMESTAMP('2014-01-03 00:00:00');
  • UNIX_TIMESTAMP('date') 將日期字串轉時間戳(秒)。
  • 範圍查詢 [start, end) 精確覆蓋一天,利用 createtime 索引。

反向轉換

-- 時間戳 → 格式化字串
SELECT FROM_UNIXTIME(createtime, '%Y-%m-%d %H:%i:%s') FROM tbl;

-- 當前時間戳
SELECT UNIX_TIMESTAMP();
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved