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

MySQL 日期時間函數大全:NOW/SYSDATE、DATE_ADD/DATE_SUB、格式化、轉換、時區與時間戳完整參考

     編輯:MySQL 綜合教學

MySQL 日期時間函數極其豐富,本文系統整理 6 大類 50+ 函數,附參數說明與實戰範例,建議收藏為開發速查表。

一、當前時間獲取

函數返回差異
NOW()DATETIME語句開始執行時固定值
SYSDATE()DATETIME函數執行瞬間動態值
CURDATE()DATE當前日期
CURTIME()TIME當前時間
UTC_DATE/TIME/TIMESTAMP()UTC 時間跨時區應用必備
SET @dt = '2008-09-10 07:15:30.123456';
DATE(@dt)        -- 2008-09-10
TIME(@dt)        -- 07:15:30.123456
YEAR(@dt)        -- 2008
QUARTER(@dt)     -- 3
MONTH(@dt)       -- 9
WEEK(@dt)        -- 36
DAY(@dt)         -- 10
HOUR(@dt)        -- 7
MINUTE(@dt)      -- 15
SECOND(@dt)      -- 30
MICROSECOND(@dt) -- 123456

EXTRACT() 統一介面

DAYOFWEEK(@dt)   -- 1=Sun...7=Sat
WEEKDAY(@dt)     -- 0=Mon...6=Sun
DAYOFYEAR(@dt)   -- 年內第幾天
WEEK(@dt, mode)  -- mode 0-7 控制週起始日
YEARWEEK(@dt)    -- 200831

名稱函數

LAST_DAY('2008-02-01') -- 2008-02-29 (閏年)
LAST_DAY('2008-08-08') -- 2008-08-31
-- 取當月天數
DAY(LAST_DAY(NOW()))

三、日期時間運算

DATE_ADD / DATE_SUB(推薦統一用這兩個)

MICROSECOND, SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, QUARTER, YEAR
SECOND_MICROSECOND, MINUTE_MICROSECOND, MINUTE_SECOND, HOUR_MICROSECOND
HOUR_SECOND, HOUR_MINUTE, DAY_MICROSECOND, DAY_SECOND, DAY_MINUTE, DAY_HOUR
YEAR_MONTH

PERIOD_ADD / PERIOD_DIFF(YYYYMM 格式)

DATEDIFF('2008-08-08','2008-08-01') -- 7
TIMEDIFF('08:08:08','00:00:00')     -- 08:08:08

四、字串/日期互轉

STR_TO_DATE(str, fmt) 字串→日期

STR_TO_DATE('08/09/2008','%m/%d/%Y')      -- 2008-08-09
STR_TO_DATE('08.09.2008 08:09:30','%m.%d.%Y %h:%i:%s')

DATE_FORMAT / TIME_FORMAT 日期→字串

DATE_FORMAT('2008-08-08 22:23:00','%W %M %Y')   -- Friday August 2008
DATE_FORMAT('2008-08-08 22:23:01','%Y%m%d%H%i%s') -- 20080808222301
TIME_FORMAT('22:23:01','%H.%i.%s')              -- 22.23.01

常用格式符

%Y 4位年  %y 2位年  %m 月  %d 日  %H 24時  %h 12時  %i 分  %s 秒  %f 微秒
%W 週名  %M 月名  %p AM/PM  %j 年內天數  %w 週內天(0=Sun)

GET_FORMAT() 取得標準格式字串

GET_FORMAT(DATE,'USA')     -- '%m.%d.%Y'
GET_FORMAT(DATETIME,'ISO') -- '%Y-%m-%d %H:%i:%s'
GET_FORMAT(TIME,'EUR')     -- '%H.%i.%s'

MAKEDATE / MAKETIME 組裝日期時間

MAKEDATE(2001,31)  -- 2001-01-31
MAKETIME(12,15,30) -- 12:15:30

五、時間戳函數

UNIX_TIMESTAMP()           -- 當前 Unix 時間戳
UNIX_TIMESTAMP('2008-08-08') -- 1218124800
FROM_UNIXTIME(1218124800)    -- '2008-08-08 00:00:00'
FROM_UNIXTIME(ts, fmt)       -- 格式化輸出

TIMESTAMP(date)              -- DATE→DATETIME
TIMESTAMP(dt, time)          -- 相加
TIMESTAMPADD(unit, n, dt)    -- 同 DATE_ADD
TIMESTAMPDIFF(unit, dt1, dt2) -- 差值,單位靈活(比 DATEDIFF 強)

六、時區轉換

CONVERT_TZ('2008-08-08 12:00:00','+08:00','+00:00') -- 2008-08-08 04:00:00
-- 等效
DATE_ADD(dt, INTERVAL -8 HOUR)
TIMESTAMPADD(HOUR, -8, dt)

小結

核心函數組合:NOW/SYSDATE 取值 → DATE/EXTRACT 拆解 → DATE_ADD/SUB 運算 → DATE_FORMAT/STR_TO_DATE 轉換 → UNIX_TIMESTAMP/FROM_UNIXTIME 時間戳互轉 → CONVERT_TZ 時區。掌握這條鏈路,日期時間處理無懼任何需求。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved