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

MySQL 日期時間函數完全速查:DATE_FORMAT、NOW、UNIX_TIMESTAMP、秒轉換與格式化符號表

     編輯:MySQL 資料庫相關知識

格式化輸出:DATE_FORMAT / TIME_FORMAT

DATE_FORMAT(date, format)
TIME_FORMAT(time, format)  -- 僅支援時分秒符號

常用格式符號 (完整表見正文)

符號含義範例
%Y4 位年份1997
%m月份 01-1210
%d日期 01-3104
%H24 制小時 00-2322
%i分鐘 00-5923
%s秒 00-5900
%W星期全名Saturday
%M月份全名October
%D帶序數詞綴日期4th
%r12 制時間10:23:00 PM
%T24 制時間22:23:00
%%字面 %%

範例

SELECT DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y');   -- Saturday October 1997
SELECT DATE_FORMAT('1997-10-04 22:23:00', '%H:%i:%s');   -- 22:23:00
SELECT DATE_FORMAT('1997-10-04 22:23:00', '%D %y %a %d %m %b %j'); -- 4th 97 Sat 04 10 Oct 277

當前時間取得

函數回傳格式 (字串/數值)範例
CURDATE() / CURRENT_DATE'YYYY-MM-DD' / YYYYMMDD'1997-12-15' / 19971215
CURTIME() / CURRENT_TIME'HH:MM:SS' / HHMMSS'23:50:26' / 235026
NOW() / SYSDATE() / CURRENT_TIMESTAMP'YYYY-MM-DD HH:MM:SS' / YYYYMMDDHHMMSS'1997-12-15 23:50:26' / 19971215235026

Unix 時間戳互轉

UNIX_TIMESTAMP()           -- 當前秒數 (從 1970-01-01 UTC)
UNIX_TIMESTAMP('1997-10-04 22:23:00')  -- 指定時間秒數 → 875996580

FROM_UNIXTIME(875996580)                   -- '1997-10-04 22:23:00'
FROM_UNIXTIME(875996580, '%Y %D %M %h:%i:%s %x') -- 1997 4th October 10:23:00 x

若欄位為 `TIMESTAMP` 型別,`UNIX_TIMESTAMP` 直接讀取內部值,無隱性轉換開銷。

秒與時間互轉

SEC_TO_TIME(2378)   -- '00:39:38' / 3938
TIME_TO_SEC('22:23:00')  -- 80580
TIME_TO_SEC('00:39:38')  -- 2378

實戰小技巧

  • 儲存 UTC 時間戳 (BIGINT/INT),顯示層用 `FROM_UNIXTIME` 配合使用者時區格式化
  • 避免在 `WHERE` 條件對日期欄位使用函數 (如 `DATE(created_at) = ...`),導致索引失效;改用範圍查詢 `created_at >= '2023-01-01' AND created_at < '2023-01-02'`
  • MySQL 8.0+ 支援 `DATE_FORMAT` 的 `locale` 參數,可直接輸出中文星期/月份
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved