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

MySQL 日期時間函數完整指南:格式化、運算、轉換實例

     編輯:MySQL 資料庫相關知識

日期時間取值函數

函數說明範例結果
NOW() / SYSDATE()當前日期時間2024-05-20 14:30:00
CURDATE()當前日期2024-05-20
CURTIME()當前時間14:30:00
YEAR(date)年份2024
MONTH(date)月份 1-125
DAY(date)月份中的天 1-3120
HOUR(time)小時 0-2314
MINUTE(time)分鐘 0-5930
SECOND(time)秒 0-590
DAYOFWEEK(date)星期索引 1(日)-7(六)2
WEEKDAY(date)星期索引 0(一)-6(日)0
DAYNAME(date)星期名稱Monday
MONTHNAME(date)月份名稱May
QUARTER(date)季度 1-42
WEEK(date[,mode])年度週數,mode 控制週起始日21
DAYOFYEAR(date)年度天數 1-366141

日期運算:DATE_ADD / DATE_SUB

DATE_ADD(date, INTERVAL expr unit)
DATE_SUB(date, INTERVAL expr unit)
-- 簡寫
date + INTERVAL expr unit
date - INTERVAL expr unit

常用 unit:SECOND、MINUTE、HOUR、DAY、MONTH、YEAR、DAY_HOUR、DAY_SECOND 等複合單位。

實例

SELECT DATE_ADD('2024-05-20', INTERVAL 1 DAY);        -- 2024-05-21
SELECT '2024-05-20' + INTERVAL 1 MONTH;               -- 2024-06-20
SELECT DATE_SUB(NOW(), INTERVAL '1 12:30' DAY_HOUR);  -- 扣 1 天 12.5 小時

日期格式化:DATE_FORMAT

DATE_FORMAT(date, format)
格式符含義
%Y四位年
%m兩位月 01-12
%d兩位日 01-31
%H24小時 00-23
%i分鐘 00-59
%s秒 00-59
%W星期全名
%M月份全名
%r12小時 hh:mm:ss AM/PM
%T24小時 hh:mm:ss
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s');  -- 2024-05-20 14:30:00

時間戳轉換

UNIX_TIMESTAMP([date])      -- 日期轉 Unix 秒數
FROM_UNIXTIME(unix_ts[,fmt]) -- Unix 秒數轉日期字串
SELECT UNIX_TIMESTAMP('2024-05-20 14:30:00');  -- 1716186600
SELECT FROM_UNIXTIME(1716186600, '%Y-%m-%d');  -- 2024-05-20

秒數與時間互轉

SEC_TO_TIME(seconds)   -- 秒數轉 HH:MM:SS
TIME_TO_SEC(time)      -- 時間轉總秒數

週期運算

PERIOD_ADD(YYMM, N)    -- 加 N 月,回傳 YYYYMM
PERIOD_DIFF(P1, P2)    -- 兩期間相差月數

實用查詢範例

-- 最近 30 天資料
SELECT * FROM orders 
WHERE order_date >= DATE_SUB(CURDATE(), INTERVAL 30 DAY);

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

-- 下個月第一天
SELECT DATE_ADD(DATE_FORMAT(NOW(), '%Y-%m-01'), INTERVAL 1 MONTH);
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved