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

MySQL 日期時間提取:YEAR、MONTH、DAY 函數與 DATE_FORMAT 實戰

     編輯:MySQL 綜合教學

常用提取函數對比

需求函數範例輸出
年份YEAR(date)YEAR('2023-08-15')2023
月份MONTH(date)MONTH('2023-08-15')8
日期DAY(date) / DAYOFMONTH()DAY('2023-08-15')15
任意格式DATE_FORMAT(date, fmt)DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s')2023-08-15 14:30:00

WHERE 條件中高效用法

-- 查 2013 年記錄(推薦:可用索引)
SELECT * FROM historybarcodesort
WHERE produceDate >= '2013-01-01' AND produceDate < '2014-01-01';

-- 不推薦:函數導致全表掃描
SELECT * FROM historybarcodesort
WHERE YEAR(produceDate) = 2013;

-- DATE_FORMAT 同理失效索引
SELECT DATE_FORMAT(produceDate, '%Y') AS yr
FROM historybarcodesort
WHERE DATE_FORMAT(produceDate, '%Y') = '2013';

格式化符號速查

%Y  四位年份    %y  兩位年份
%m  月份(01-12) %c  月份(1-12)
%d  日期(01-31) %e  日期(1-31)
%H  時(00-23)   %h  時(01-12)
%i  分(00-59)   %s  秒(00-59)
%W  週名稱      %a  週縮寫

最佳實踐

  • 範圍查詢用常量邊界,讓優化器走索引範圍掃描
  • 顯示/匯出才用 DATE_FORMAT,不在 WHERE/JOIN/GROUP BY 用
  • MySQL 8.0+ 可用 CAST(date AS DATE) 截取日期部分
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved