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

MySQL 日期時間欄位擷取年、月、日:DATE_FORMAT 實用範例

     編輯:MySQL 資料庫相關知識

MySQL 中從 DATETIME 或 TIMESTAMP 欄位擷取年份、月份、日期,最靈活的方式是使用 DATE_FORMAT() 函數。本文提供常用格式化範例與效能提醒。

基本語法

DATE_FORMAT(date_column, format_string)

常用格式符號

符號含義範例輸出
%Y四位數年份2024
%y兩位數年份24
%m月份(01-12)01
%c月份(1-12)1
%d日期(01-31)05
%e日期(1-31)5
%H小時(00-23)14
%i分鐘(00-59)30
%s秒數(00-59)45

實用查詢範例

1. 擷取年份並篩選

SELECT DATE_FORMAT(produceDate, '%Y') AS yr
FROM historybarcodesort
WHERE DATE_FORMAT(produceDate, '%Y') = '2013';

結果:2013

2. 組合格式:YYYY-MM-DD

SELECT DATE_FORMAT(create_time, '%Y-%m-%d') AS date_only FROM orders;

3. 依年月分組統計

SELECT DATE_FORMAT(order_time, '%Y-%m') AS ym, COUNT(*) AS cnt
FROM orders
GROUP BY ym
ORDER BY ym DESC;

效能提醒

  • 避免在 WHERE 條件中對欄位使用函數(如 WHERE DATE_FORMAT(col, '%Y') = '2023'),會導致無法使用索引(全表掃描)。
  • 篩選日期範圍請改用範圍查詢:
-- 推薦:可用索引
WHERE produceDate >= '2013-01-01' AND produceDate < '2014-01-01'

-- 或 MySQL 8.0+ 功能性索引
ALTER TABLE t ADD INDEX idx_year ((YEAR(produceDate)));
  • 單純 SELECT 顯示格式化無效能影響,僅影響回傳資料格式。

替代函數

  • YEAR(date)、MONTH(date)、DAY(date):直接回傳數值,適合運算/分組,同樣會阻礙索引。
  • EXTRACT(YEAR FROM date):標準 SQL 寫法。

掌握 DATE_FORMAT 靈活格式化,搭配正確範圍查詢保護索引,是 MySQL 日期處理的核心功夫。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved