MySQL DATE_FORMAT 函數完整教學:日期格式轉換、語法與實用範例

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:59
  • japanese_format:2024年09月16日
  • european_format:16/09/2024
  • twelve_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. 參考資源

希望本文能幫助您更好地理解與活用 DATE_FORMAT 函數。