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

MySQL DATE_FORMAT() 函數詳解:日期格式化完全指南

     編輯:MySQL 綜合教學

MySQL DATE_FORMAT() 函數詳解:日期格式化完全指南

DATE_FORMAT(date, format) 將日期/時間按指定格式輸出字符串,常用於報表展示、分組統計、ETL 轉換。

常用格式符對照表

符號含義示例
%Y4位年份2023
%y2位年份23
%m月份(01-12)07
%c月份(1-12)7
%d日期(01-31)05
%e日期(1-31)5
%H小時(00-23)14
%h/%I小時(01-12)02
%i分鐘(00-59)30
%s/%S秒(00-59)45
%T時間 24h (HH:MM:SS)14:30:45
%r時間 12h (hh:mm:ss AM/PM)02:30:45 PM
%W星期名Wednesday
%a縮寫星期名Wed
%M月份名July
%b縮寫月份名Jul
%j一年中的天(001-366)186
%U週數(00-53) 週日為首26
%u週數(00-53) 週一為首27
%f微秒(000000-999999)123456

實戰示例

SELECT DATE_FORMAT(NOW(), '%b %d %Y %h:%i %p');   -- Jul 05 2023 02:30 PM
SELECT DATE_FORMAT(NOW(), '%m-%d-%Y');            -- 07-05-2023
SELECT DATE_FORMAT(NOW(), '%d %b %y');            -- 05 Jul 23
SELECT DATE_FORMAT(NOW(), '%d %b %Y %T:%f');      -- 05 Jul 2023 14:30:45:123456

業務場景:按周統計訂單金額

SELECT 
    DATE_FORMAT(`order_create_time`, '%u') AS week,
    SUM(`total_amount`) AS money
FROM `corder`
WHERE DATE_FORMAT(`order_create_time`, '%Y') = '2012'
GROUP BY week
ORDER BY week;

結果:

week  money
13    854314.83
14    5177385.26
15    4870063.87
...

注意事項

  • DATE_FORMAT 返回字符串,不可直接用於索引範圍掃描;WHERE 子句建議用 date_col >= '2023-01-01' AND date_col < '2023-02-01'。
  • 時區影響:NOW() 受 time_zone 影響,存儲建議用 UTC,展示層轉換。
  • MySQL 8.0+ 可用 DATE_FORMAT 配合 CTE 做複雜周期報表。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved