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

MySQL 日期時間函數完整速查手冊(第二版):格式化、運算、時間戳、週期計算

     編輯:MySQL 綜合教學

MySQL 日期時間函數完整速查(第二版)

補充更多實用組合技與週期計算範例,適合直接複製到專案文檔。

快速導覽

當前日期時間

函數返回備註
NOW() / CURRENT_TIMESTAMP()YYYY-MM-DD HH:MM:SS語句執行開始時刻固定
SYSDATE()YYYY-MM-DD HH:MM:SS實時返回,函數執行時刻
CURDATE() / CURRENT_DATE()YYYY-MM-DD
CURTIME() / CURRENT_TIME()HH:MM:SS

部份提取

函數範例說明
YEAR(d)2024
QUARTER(d)1季度 1-4
MONTH(d)11-12
MONTHNAME(d)January英文全名
WEEK(d, mode)3mode=0 週日, 1 週一
DAY(d) / DAYOFMONTH(d)151-31
DAYOFYEAR(d)151-366
DAYOFWEEK(d)21=週日..7=週六
WEEKDAY(d)10=週一..6=週日
DAYNAME(d)Monday英文全名
HOUR(t)140-23
MINUTE(t)300-59
SECOND(t)450-59

DATE_FORMAT 格式符完整表

符號含義範例
%Y4位年2024
%y2位年24
%M月英文全名January
%m月兩位01
%b月縮寫Jan
%D帶後綴日1st, 2nd
%d日兩位15
%e日不補015
%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制時間 AM/PM02:30:45 PM
%T24制時間14:30:45
%pAM/PMPM
%j年內天數(001-366)015
%%字面%%

日期加減運算

DATE_ADD(date, INTERVAL expr unit)  -- 加
DATE_SUB(date, INTERVAL expr unit)  -- 減
ADDDATE(date, INTERVAL expr unit)   -- 同 DATE_ADD
SUBDATE(date, INTERVAL expr unit)   -- 同 DATE_SUB

-- 單位
SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, QUARTER, YEAR
MINUTE_SECOND, HOUR_MINUTE, DAY_HOUR, YEAR_MONTH
HOUR_SECOND, DAY_MINUTE, DAY_SECOND

Unix 時間戳互轉

UNIX_TIMESTAMP()              -- 當前秒數
UNIX_TIMESTAMP('2024-01-15')  -- 指定日期轉秒數
FROM_UNIXTIME(1705305045)     -- 秒數轉 datetime
FROM_UNIXTIME(ts, '%Y-%m-%d') -- 秒數轉自訂格式

秒數與時間互轉

TIME_TO_SEC('01:30:00')  -- 5400
SEC_TO_TIME(5400)        -- 01:30:00

實用組合技

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

-- 本月最後一天 23:59:59
SELECT DATE_FORMAT(LAST_DAY(NOW()), '%Y-%m-%d 23:59:59');

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

-- 判斷週末
SELECT CASE WHEN WEEKDAY(NOW()) IN (5,6) THEN '週末' ELSE '工作日' END;

-- 年齡計算
SELECT FLOOR(DATEDIFF(NOW(), '1990-05-20') / 365.25);

-- 當季第一天
SELECT DATE_FORMAT(NOW(), CONCAT('%Y-', LPAD(QUARTER(NOW())*3-2,2,'0'), '-01'));

-- 最近一個週一
SELECT DATE_SUB(NOW(), INTERVAL WEEKDAY(NOW()) DAY);

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

TO_DAYS('2024-01-15')   -- 738523
FROM_DAYS(738523)       -- 2024-01-15
-- 注意:1582 年前不準確(格里曆改革)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved