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

MySQL 日期時間函數大全:從 DAYOFWEEK 到 UNIX_TIMESTAMP 速查手冊

     編輯:MySQL 資料庫相關知識

常用查詢模式


-- 最近 30 天數據
SELECT * FROM tbl WHERE TO_DAYS(NOW()) - TO_DAYS(date_col) <= 30;

日期提取函數

函數返回值範例
DAYOFWEEK(date)星期索引1=Sun ... 7=Sat
WEEKDAY(date)星期索引0=Mon ... 6=Sun
DAYOFMONTH(date)月內天數1-31
DAYOFYEAR(date)年內天數1-366
MONTH(date)月份1-12
DAYNAME(date)星期名Thursday
MONTHNAME(date)月份名February
QUARTER(date)季度1-4
YEAR(date)年份1000-9999

周計算:WEEK() 與 YEARWEEK()


WEEK(date[, mode])  -- mode 0-3 控制週起始日與返回範圍
YEARWEEK(date[, mode])  -- 返回 YYYYWW,跨年周正確歸屬
-- 建議用 mode 2 或 3(ISO 8601),避免第 0 周困惑

時間提取

函數範圍
HOUR(time)0-23
MINUTE(time)0-59
SECOND(time)0-59

日期算術:DATE_ADD / DATE_SUB / ADDDATE / SUBDATE


DATE_ADD(date, INTERVAL expr type)
-- type: SECOND, MINUTE, HOUR, DAY, MONTH, YEAR,
--       MINUTE_SECOND, HOUR_MINUTE, DAY_HOUR, YEAR_MONTH,
--       HOUR_SECOND, DAY_MINUTE, DAY_SECOND
-- 例:
SELECT '1997-12-31 23:59:59' + INTERVAL 1 SECOND;  -- 1998-01-01 00:00:00
SELECT DATE_ADD('1998-01-30', INTERVAL 1 MONTH);    -- 1998-02-28 (自動調整月末)

EXTRACT - 提取日期部分


EXTRACT(YEAR FROM '1999-07-02');           -- 1999
EXTRACT(YEAR_MONTH FROM '1999-07-02');     -- 199907
EXTRACT(DAY_MINUTE FROM '1999-07-02 01:02:03'); -- 20102

天數轉換


TO_DAYS(date)   -- 從 Year 0 起的天數(1582 年格里曆前不準)
FROM_DAYS(N)    -- 天數轉 DATE

格式化輸出


DATE_FORMAT(date, format)  -- 修飾符:%Y %m %d %H %i %s %W %M %D ...
TIME_FORMAT(time, format)  -- 僅時分秒修飾符
-- 例:DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y') → 'Saturday October 1997'

當前時間


NOW() / SYSDATE() / CURRENT_TIMESTAMP  -- 'YYYY-MM-DD HH:MM:SS'
CURDATE() / CURRENT_DATE               -- 'YYYY-MM-DD'
CURTIME() / CURRENT_TIME               -- 'HH:MM:SS'

Unix 時間戳互轉


UNIX_TIMESTAMP([date])      -- 秒數(1970 起),TIMESTAMP 列直接取內部值
FROM_UNIXTIME(unix_ts[, fmt]) -- 反向,可加 DATE_FORMAT 修飾符

秒↔時間


SEC_TO_TIME(seconds)  -- 'HH:MM:SS'
TIME_TO_SEC(time)     -- 總秒數
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved