1. 導入
在MySQL資料庫中,經常需要處理日期和時間資料。雖然資料庫中儲存的日期通常是標準格式,但在顯示給用戶時,往往希望以更易讀的方式來呈現。這時,DATE_FORMAT
函數就派上用場了。本文將介紹 DATE_FORMAT
函數的用法與各種格式選項,並透過實際範例說明如何靈活應用。
2. DATE_FORMAT函數概述
2.1 什麼是DATE_FORMAT函數?
DATE_FORMAT
函數是MySQL用來將日期資料轉換成指定格式的函數。當你不希望僅僅用預設的YYYY-MM-DD或日期時間格式輸出時,就可以利用這個函數。例如,若要將日期以「2024年9月16日」的格式顯示給用戶,這個函數會非常有用。
2.2 基本語法
DATE_FORMAT
函數的基本語法如下:
DATE_FORMAT(date, format)
date
:需要格式化的日期資料。format
:欲輸出的日期格式字串。
讓我們來看一個實際的例子:
SELECT DATE_FORMAT('2024-09-16', '%Y年%m月%d日') AS formatted_date;
這個查詢會把 ‘2024-09-16’ 這個日期轉換成「2024年09月16日」的格式顯示出來。

3. 日期格式的參數
3.1 格式指定符一覽
DATE_FORMAT
函數可使用的格式指定符有很多,下表是常用的一些:
%Y
:4位數西元年(例如:2024)%y
:2位數西元年(例如:24)%m
:2位數月份(01到12)%c
:月份(1到12)%d
:2位數日期(01到31)%e
:日期(1到31)%H
:24小時制小時(00到23)%h
或%I
:12小時制小時(01到12)%i
:分鐘(00到59)%s
:秒(00到59)%p
:AM或PM
3.2 實際範例
讓我們看看這些格式指定符在查詢時如何輸出不同的結果。
SELECT
DATE_FORMAT('2024-09-16 14:35:59', '%Y-%m-%d %H:%i:%s') AS full_format,
DATE_FORMAT('2024-09-16 14:35:59', '%Y年%m月%d日') AS japanese_format,
DATE_FORMAT('2024-09-16 14:35:59', '%d/%m/%Y') AS european_format,
DATE_FORMAT('2024-09-16 14:35:59', '%h:%i %p') AS twelve_hour_format;
這個查詢的輸出結果如下:
full_format
:2024-09-16 14:35:59japanese_format
:2024年09月16日european_format
:16/09/2024twelve_hour_format
:02:35 PM
4. 實務應用範例
4.1 情境一:報表產生
舉例來說,在企業每月產出報表時,經常需要將日期以「YYYY年MM月」格式顯示。下面的查詢就能達成這樣的需求:
SELECT
DATE_FORMAT(sale_date, '%Y年%m月') AS report_month,
SUM(sales) AS total_sales
FROM sales_data
GROUP BY report_month;
此查詢會將銷售資料以每月總額、「2024年09月」等格式呈現。
4.2 情境二:用戶介面顯示
在網頁應用程式中,若想要讓用戶更直觀地看到日期資訊,DATE_FORMAT
也很實用。例如在用戶個人頁面顯示最後登入時間時,可以這樣寫:
SELECT
user_name,
DATE_FORMAT(last_login, '%Y/%m/%d %H:%i') AS last_login_formatted
FROM users;
這樣用戶的最後登入時間就會顯示為「2024/09/16 14:35」的格式。
4.3 情境三:查詢優化
有時在查詢優化時也會用到 DATE_FORMAT
,例如需要根據特定年月範圍篩選資料時:
SELECT
*
FROM transactions
WHERE DATE_FORMAT(transaction_date, '%Y-%m') = '2024-09';
這個查詢會找出所有2024年9月的交易記錄。
5. DATE_FORMAT的注意事項與最佳實踐
5.1 效能考量
如果頻繁使用 DATE_FORMAT
,可能會對效能產生影響,特別是在處理大量資料時。若有需要,也可以考慮預先儲存格式化的日期,或於應用層處理格式轉換。
5.2 在地化(多語系)
若要建構多語系系統,使用 DATE_FORMAT
時應特別注意在地化。不同國家或地區對日期的表示方式可能不同,請根據用戶的語系動態調整格式。
5.3 格式一致性
在系統中保持日期格式一致,對提升用戶體驗非常重要。例如,在輸入表單、顯示區塊、報表等各處使用相同的格式,可避免用戶混淆。
6. 結論
DATE_FORMAT
函數是MySQL中非常強大的日期格式化工具。本文從基本用法到實務範例、注意事項與最佳實踐都做了說明。善用這個函數,可以讓日期資訊更直觀、友善地呈現給用戶。建議您進一步學習更進階的日期與時間操作技巧。
7. 參考資源
- MySQL官方文件:DATE_FORMAT
- 其它相關文章與教學將會持續更新,建議定期參考官方文件與專業部落格。
希望本文能幫助您更好地理解與活用 DATE_FORMAT
函數。