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

MySQL 日期時間函數完整速查手冊(含格式化、運算、時間戳轉換)

     編輯:MySQL 綜合教學

MySQL 日期時間函數完整速查

開發中頻繁用到日期時間處理,官方文檔分散,這裡整理為分類速查表,支援直接複製使用。

取得當前日期時間

函數返回值備註
NOW() / CURRENT_TIMESTAMP()YYYY-MM-DD HH:MM:SS當前日期時間
CURDATE() / CURRENT_DATE() / SYSDATE()YYYY-MM-DD當前日期
CURTIME()HH:MM:SS當前時間

日期部份提取

函數說明範例結果
YEAR(date)年份2024
MONTH(date)月份 (1-12)1
MONTHNAME(date)月份英文名January
DAY(date) / DAYOFMONTH(date)日期 (1-31)15
DAYOFWEEK(date)星期 (1=週日..7=週六)2
WEEKDAY(date)星期 (0=週一..6=週日)1
DAYNAME(date)星期英文名Monday
QUARTER(date)季度 (1-4)1
DAYOFYEAR(date)一年中的第幾天15
WEEK(date, mode)一年中的第幾週mode=0 週日起算,1 週一起算
HOUR(time)小時 (0-23)14
MINUTE(time)分鐘 (0-59)30
SECOND(time)秒 (0-59)45

日期格式化:DATE_FORMAT(date, format)

格式符含義範例
%Y4位年份2024
%y2位年份24
%M月份英文全名January
%m月份兩位數字01
%b月份縮寫Jan
%D帶後綴的日期1st, 2nd
%d日期兩位數字15
%e日期數字(不補0)15
%W星期英文全名Monday
%a星期縮寫Mon
%w星期數字(0=週日)1
%H24制小時(00-23)14
%k24制小時(0-23)14
%I / %l12制小時(01-12 / 1-12)02 / 2
%i分鐘(00-59)30
%S / %s秒(00-59)45
%r12制時間 hh:mm:ss AM/PM02:30:45 PM
%T24制時間 hh:mm:ss14:30:45
%pAM/PMPM
%j一年中的天數(001-366)015
%%字面 %%
-- 常用範例
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s');  -- 2024-01-15 14:30:45
SELECT DATE_FORMAT(NOW(), '%Y年%m月%d日 %H時%i分'); -- 2024年01月15日 14時30分

日期加減運算

函數語法說明
DATE_ADD / ADDDATEDATE_ADD(date, INTERVAL expr unit)加法
DATE_SUB / SUBDATEDATE_SUB(date, INTERVAL expr unit)減法

INTERVAL 単位:

SECOND, MINUTE, HOUR, DAY, MONTH, YEAR
MINUTE_SECOND  -- "分:秒"
HOUR_MINUTE    -- "時:分"
DAY_HOUR       -- "天 時"
YEAR_MONTH     -- "年-月"
HOUR_SECOND    -- "時:分:秒"
DAY_MINUTE     -- "天 時:分"
DAY_SECOND     -- "天 時:分:秒"
-- 範例
SELECT DATE_ADD(NOW(), INTERVAL 5 DAY);      -- 5天後
SELECT DATE_SUB(NOW(), INTERVAL 3 MONTH);    -- 3個月前
SELECT DATE_ADD('2024-01-15', INTERVAL '2 12' DAY_HOUR); -- 2天12小時後

時間戳轉換

函數說明
UNIX_TIMESTAMP()當前 Unix 時間戳(秒)
UNIX_TIMESTAMP(date)指定日期轉 Unix 時間戳
FROM_UNIXTIME(ts)時間戳轉 YYYY-MM-DD HH:MM:SS
FROM_UNIXTIME(ts, format)時間戳轉自訂格式
SELECT UNIX_TIMESTAMP();           -- 1705305045
SELECT FROM_UNIXTIME(1705305045);  -- 2024-01-15 14:30:45
SELECT FROM_UNIXTIME(1705305045, '%Y-%m-%d'); -- 2024-01-15

秒數與時間互轉

函數說明
TIME_TO_SEC(time)HH:MM:SS 轉總秒數
SEC_TO_TIME(seconds)秒數轉 HH:MM:SS
SELECT TIME_TO_SEC('01:30:00');  -- 5400
SELECT SEC_TO_TIME(5400);        -- 01:30:00

天數轉換(歷史日期慎用)

函數說明
TO_DAYS(date)日期轉西元0年迄今天數(1582年前不準)
FROM_DAYS(N)天數轉日期(1582年前不準)

實用組合技

-- 本月第一天
SELECT DATE_FORMAT(NOW(), '%Y-%m-01');

-- 本月最後一天
SELECT LAST_DAY(NOW());

-- 兩日期相差天數
SELECT DATEDIFF('2024-12-31', '2024-01-01');  -- 365

-- 判斷是否為週末
SELECT CASE WHEN WEEKDAY(NOW()) IN (5,6) THEN '週末' ELSE '工作日' END;
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved