SELECT * FROM `table`
WHERE DATE_FORMAT(FROM_UNIXTIME(`createtime`), '%Y-%m-%d') = '2024-01-02';
unix_timestamp:欄位名或秒數整數。format:可選,同 DATE_FORMAT 格式化字串。DATETIME 或格式化字串。| 符號 | 含義 | 範例 |
|---|---|---|
%Y | 四位年 | 2024 |
%m | 兩位月 | 01 |
%d | 兩位日 | 02 |
%H | 24 制時 | 14 |
%i | 分 | 05 |
%s | 秒 | 09 |
%W | 星期名 | Tuesday |
%M | 月份名 | January |
避免在 WHERE 欄位上使用函數導致索引失效。
改寫為範圍查詢(可用索引):
SELECT * FROM `table`
WHERE `createtime` BETWEEN UNIX_TIMESTAMP('2024-01-02 00:00:00')
AND UNIX_TIMESTAMP('2024-01-02 23:59:59');
FROM_UNIXTIME 依伺服器 time_zone 系統變數轉換。SET time_zone = '+08:00' 或應用層轉換。