首頁 > 軟體

MySQL日期時間函數知識彙總

2022-03-16 13:01:20

1. 獲取時間

函數功能返回格式
CURDATE(), CURRENT_DATE()返回當前日期,只包含年、月、日2022-03-08
CURTIME(), CURRENT_TIME()返回當前時間,只包含時、分、秒19:35:46
NOW(), SYSDATE(), CURRENT_TIMESTAMP(), LOCALTIME(), LOCALTIMESTAMP()返回當前系統日期和時間2022-03-08 19:37:07
UTC_DATE()返回UTC(世界標準時間)日期2022-03-08
UTC_TIME()返回UTC(世界標準時間)時間11:38:52

2. 日期與時間戳的轉換

函數功能返回格式
UNIX_TIMESTAMP(), UNIX_TIMESTAMP(NOW())以UNIX時間戳的形式返回當前時間1646739875
FROM_UNIXTIME(1646739875)將UNIX時間戳轉換為普通時間格式2022-03-08 19:44:35

3. 獲取月份、星期、星期數、天數等函數

函數功能返回格式
YEAR(NOW()),/MONTH(NOW()),/DAY(NOW())返回年/月/日2022/3/8
HOUR(NOW()), /MONTH(NOW()), /DAY(NOW())返回時/分/秒19/3/8
MONTHNAME(NOW())返回英文月份March
DAYNAME(NOW())返回星期幾Tuesday
WEEKDAY(NOW())返回周幾(從0開始)1(星期二)
QUARTER(NOW())返回日期對應的季度,範圍1-41
WEEK(NOW()), WEEKOFYEAR(NOW())返回一年中的第幾周10
DAYOFYEAR(NOW())返回一年中的第幾天67
DAYOFMONTH(NOW())返回所在月份中的第幾天8
DAYOFWEEK(NOW())返回周幾(週日為1)3(星期二)

4. 日期的操作函數

-- 返回指定日期中的特定部分,type指定返回的值;
SELECT EXTRACT(TYPE FROM NOW()) FROM DUAL;

TYPE的含義與取值:

type取值含義返回值
MICROSECOND返回毫秒數 
SECOND返回秒數12
MINUTE返回分鐘數25
HOUR返回小時數20(24小時制)
DAY返回天數8
WEEK返回日期在一年中的第幾個星期10
MONTH返回日期在一年中的第幾個月3
QUARTER返回日期在一年中和第幾個季度1
YEAR返回日期的年份2022
SECOND_MICROSECOND返回秒和毫秒值34000000
MINUTE_MICROSECOND返回分鐘和毫秒值3716000000
MINUTE_SECOND返回分鐘和秒值3851(2022-03-08 20:38:51)
HOUR_MICROSECOND返回小時和毫秒值203944000000(2022-03-08 20:39:44)
HOUR_SECOND返回小時和秒值204025(2022-03-08 20:40:25)
HOUR_MINUTE返回小時和分鐘值2040(2022-03-08 20:40:52)
DAY_MICROSECOND返回天和毫秒值204126000000(2022-03-08 20:41:26)
DAY_SECOND返回天和秒值204208(2022-03-08 20:42:08)
DAY_MINUTE返回天和分鐘值2043(2022-03-08 20:43:17)
DAY_HOUR返回天和小時20(2022-03-08 20:43:54)
YEAR_MONTH返回年和月202203(2022-03-08 20:44:23)

5. 時鐘和秒鐘轉換的函數

-- 將time轉化為秒並返回結果值,轉化公式為:小時*3600*分鐘*69+秒
SELECT TIME_TO_SEC('2022-03-08 20:44:23')
FROM DUAL;
-- 轉換結果:74663

-- seconds轉化為時分秒
SELECT SEC_TO_TIME(74663) FROM DUAL;  
-- 轉換結果:20:44:23

6. 計算日期和時間的函數

6.1 計算時間間隔

函數功能備註
DATE_ADD(datetime, INTERVAL expr type),ADDDATE(datetime, INTERVAL expr type)計算時間間隔(時間增加)expr表示時間間隔,type值見下表
DATE_SUB(datetime, INTERVAL expr type),SUBDATE(datetime, INTERVAL expr type)計算時間間隔(時間減少)expr表示時間間隔,type值見下表

舉例:

SELECT DATE_ADD('2022-03-08 20:43:54', INTERVAL 2 DAY) AS A FROM DUAL;
SELECT ADDDATE('2022-03-08 20:43:54', INTERVAL 2 DAY) AS B FROM DUAL;
-- 返回相同結果:2022-03-10 20:43:54


SELECT DATE_SUB('2022-03-08 20:43:54', INTERVAL 2 DAY) C FROM DUAL;
SELECT SUBDATE('2022-03-08 20:43:54', INTERVAL 2 DAY) D FROM DUAL;
-- 返回相同結果:2022-03-06 20:43:54


-- 間隔兩和型別的時間時可以用冒號和下劃線,要用單引號
SELECT DATE_ADD('2022-03-08 20:43:54', INTERVAL '2:2' DAY_HOUR ) AS A FROM DUAL;
SELECT DATE_ADD('2022-03-08 20:43:54', INTERVAL '2_2' DAY_HOUR ) AS A FROM DUAL;
-- 返回相同結果:2022-03-10 22:43:54

type值如下表:

type間隔型別含義
HOUR小時
MINUTE分鐘
SECOND
YEAR
MONTH
DAY
YEAR_MONTH年和月
DAY_HOUR日和小時
DAY_MINUTE日和分鐘
DAY_SECOND日和秒
HOUR_MINUTE小時和分鐘
HOUR_SECOND小時和秒
MINUTE_SECOND分鐘和秒

6.2 時間計算

函數功能返回格式
ADDTIME(time1, expr)新增expr到time1並返回結果2022-03-09 21:44:55
SUBTIME(time2, expr)time1減去expr並返回結果2022-03-07 19:42:53
DATEDIFF(time1, time2)返回time1與time2的日期間隔(time1-time2)-1(天)
TIMEDIFF(time1, time2)返回time1與time2的時間間隔(time1-time2)26:03:45(時分秒)
FROM_DAYS(N)返回從0000年1月1日起,N天以後的日期0002-09-27
TO_DAYS(time)返回時間time距離0000年1月1日的天數738588
LAST_DAY(time)返回time所在月份的最後一天的日期2022-03-31
MAKEDATE(year, n)針對給定年份與所在年份中的天數返回一個日期2022-04-10
MAKETIME(h, m, s)將給定的小時、分鐘和秒組合成時間並返回10:20:33
PERIOD_ADD(time,n)此函數將給定時期的給定月份數新增到格式YYMM或YYYYMM中20220309

舉例:

SELECT DATE_ADD('2022-03-08 20:43:54', INTERVAL '2:2' DAY_HOUR ) AS A FROM DUAL;
-- 返回:2022-03-10 22:43:54

SELECT ADDTIME('2022-03-08 20:43:54', '1 1:1:1') FROM DUAL;
-- 返回:2022-03-09 21:44:55

SELECT SUBTIME('2022-03-08 20:43:54', '1 1:1:1') FROM DUAL;
-- 返回:2022-03-07 19:42:53

SELECT DATEDIFF('2022-03-08 20:43:54', '2022-03-09 20:43:54') AS A FROM DUAL;
-- 返回:-1

SELECT TIMEDIFF('2022-03-09 20:43:54', '2022-03-08 18:40:09') AS B FROM DUAL;
-- 返回:26:03:45

SELECT FROM_DAYS(1000) FROM DUAL;
-- 返回:0002-09-27

SELECT TO_DAYS('2022-03-09 20:43:54') FROM DUAL;
-- 返回:738588

SELECT LAST_DAY('2022-03-09 20:43:54') FROM DUAL;
-- 返回:2022-03-31

SELECT MAKEDATE(2022, 100) FROM DUAL;
-- 返回:2022-04-10

SELECT MAKETIME(10, 20, 33) FROM DUAL;
-- 返回:10:20:33

SELECT PERIOD_ADD(20220308,1) FROM DUAL;
-- 返回:20220309

7. 日期的格式化與解析

函數功能返回格式
DATE_FORMAT(date,fmt)按照字串fmt格式化日期date值 
TIME_FORMAT(time,fmt)按照字串fmt格式化時間time值 
STR_TO_DATE(str, fmt)按照字串fmt對str進行解析,解析為一個日期 

fmt格式如下:

格式符說明格式符說明
%Y4位元數位表示年份%y表示兩位數位的年份
%M月名錶示月份(January,....)%m兩位數位表示月份
%b縮寫的月名(Jan.,Feb.,....)%d兩位數位表示月中的天數
%D英文字尾表示月中的天數(1st,2nd,3rd,...)%c數位表示月份(1,2,3。。)
%e數位形式表示月中的天數(1,2,3,4,5.....)%h兩位數位表示小時,12小時制(01,02。。)
%H兩位數位表示小數,24小時制(01,02..)%l數位形式表示小時,12小時制(1,2。。)
%k數位形式的小時,24小時制(1,2,3)%S和%s兩位數位表示秒(00, 01, 02。。)
%i兩位數位表示分鐘(00,01,02)%a一週中的星期縮寫(Sun)
%W一週中的星期名稱(Sunday...)  
%w以數位表示週中的天數(0=Sunday,1=Monday....)  
%j以3位數位表示年中的天數(001,002...)%U以數位表示年中的第幾周,(1,2,3。。)其中Sunday為週中第一天
%u以數位表示年中的第幾周,(1,2,3。。)其中Monday為週中第一天  
%T24小時制%r12小時制
%pAM或PM%%表示%

舉例如下:

 SELECT DATE_FORMAT(NOW(), '%H:%i:%s');
 -- 返回結果:09:58:12
函數功能返回格式
GET_FORMAT(date_type,format_type)返回日期字串的顯示格式 

format_type取值如下:

舉例如下:

 SELECT GET_FORMAT(DATE, 'USA');
 -- 返回:%m.%d.%Y

到此這篇關於MySQL日期時間函數知識彙總的文章就介紹到這了,更多相關MySQL日期時間函數內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com