萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

MySQL 日期時間函數大全 (上):常用函數語法、範例與實戰應用

取得當前日期時間

NOW()           -- 日期時間 'YYYY-MM-DD HH:MM:SS'
CURDATE()       -- 日期 'YYYY-MM-DD'
CURTIME()       -- 時間 'HH:MM:SS'

日期部件擷取

函數說明範例結果
YEAR(date)年份2024
MONTH(date)月份 (1-12)5
DAY(date)日期 (1-31)15
HOUR(time)小時 (0-23)14
MINUTE(time)分鐘 (0-59)30
SECOND(time)秒 (0-59)45
DAYOFWEEK(date)星期索引 (1=Sun, 7=Sat)4
WEEKDAY(date)星期索引 (0=Mon, 6=Sun)2
DAYOFYEAR(date)年間第幾天 (1-366)135
QUARTER(date)季度 (1-4)2
WEEK(date[, mode])年間第幾週,mode 控制週起始日19
DAYNAME(date)星期英文名Wednesday
MONTHNAME(date)月份英文名May

日期計算與格式化

-- 日期加減
DATE_ADD(date, INTERVAL expr unit)
DATE_SUB(date, INTERVAL expr unit)
-- 範例:30 天前
SELECT * FROM orders WHERE created_at >= DATE_SUB(NOW(), INTERVAL 30 DAY);

-- 日期差 (天數)
DATEDIFF(date1, date2)

-- 格式化輸出
DATE_FORMAT(date, format)
-- 範例:'2024-05-15 14:30:45'
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s');

常用格式符號

%Y  四位數年份    %m  兩位數月份    %d  兩位數日期
%H  24小時制      %i  分鐘          %s  秒
%W  星期全名      %M  月份全名

實戰:查詢最近 30 天資料

SELECT * FROM logs
WHERE log_date >= DATE_SUB(CURDATE(), INTERVAL 30 DAY);
-- 或
WHERE TO_DAYS(NOW()) - TO_DAYS(log_date) <= 30;
copyright © 萬盛學電腦網 all rights reserved