MySQL日期時(shí)間函數(shù)知識(shí)匯總
1. 獲取時(shí)間
函數(shù) | 功能 | 返回格式 |
---|---|---|
CURDATE(), CURRENT_DATE() | 返回當(dāng)前日期,只包含年、月、日 | 2022-03-08 |
CURTIME(), CURRENT_TIME() | 返回當(dāng)前時(shí)間,只包含時(shí)、分、秒 | 19:35:46 |
NOW(), SYSDATE(), CURRENT_TIMESTAMP(), LOCALTIME(), LOCALTIMESTAMP() | 返回當(dāng)前系統(tǒng)日期和時(shí)間 | 2022-03-08 19:37:07 |
UTC_DATE() | 返回UTC(世界標(biāo)準(zhǔn)時(shí)間)日期 | 2022-03-08 |
UTC_TIME() | 返回UTC(世界標(biāo)準(zhǔn)時(shí)間)時(shí)間 | 11:38:52 |
2. 日期與時(shí)間戳的轉(zhuǎn)換
函數(shù) | 功能 | 返回格式 |
---|---|---|
UNIX_TIMESTAMP(), UNIX_TIMESTAMP(NOW()) | 以UNIX時(shí)間戳的形式返回當(dāng)前時(shí)間 | 1646739875 |
FROM_UNIXTIME(1646739875) | 將UNIX時(shí)間戳轉(zhuǎn)換為普通時(shí)間格式 | 2022-03-08 19:44:35 |
3. 獲取月份、星期、星期數(shù)、天數(shù)等函數(shù)
函數(shù) | 功能 | 返回格式 |
---|---|---|
YEAR(NOW()),/MONTH(NOW()),/DAY(NOW()) | 返回年/月/日 | 2022/3/8 |
HOUR(NOW()), /MONTH(NOW()), /DAY(NOW()) | 返回時(shí)/分/秒 | 19/3/8 |
MONTHNAME(NOW()) | 返回英文月份 | March |
DAYNAME(NOW()) | 返回星期幾 | Tuesday |
WEEKDAY(NOW()) | 返回周幾(從0開始) | 1(星期二) |
QUARTER(NOW()) | 返回日期對(duì)應(yīng)的季度,范圍1-4 | 1 |
WEEK(NOW()), WEEKOFYEAR(NOW()) | 返回一年中的第幾周 | 10 |
DAYOFYEAR(NOW()) | 返回一年中的第幾天 | 67 |
DAYOFMONTH(NOW()) | 返回所在月份中的第幾天 | 8 |
DAYOFWEEK(NOW()) | 返回周幾(周日為1) | 3(星期二) |
4. 日期的操作函數(shù)
-- 返回指定日期中的特定部分,type指定返回的值; SELECT EXTRACT(TYPE FROM NOW()) FROM DUAL;
TYPE的含義與取值:
type取值 | 含義 | 返回值 |
---|---|---|
MICROSECOND | 返回毫秒數(shù) | |
SECOND | 返回秒數(shù) | 12 |
MINUTE | 返回分鐘數(shù) | 25 |
HOUR | 返回小時(shí)數(shù) | 20(24小時(shí)制) |
DAY | 返回天數(shù) | 8 |
WEEK | 返回日期在一年中的第幾個(gè)星期 | 10 |
MONTH | 返回日期在一年中的第幾個(gè)月 | 3 |
QUARTER | 返回日期在一年中和第幾個(gè)季度 | 1 |
YEAR | 返回日期的年份 | 2022 |
SECOND_MICROSECOND | 返回秒和毫秒值 | 34000000 |
MINUTE_MICROSECOND | 返回分鐘和毫秒值 | 3716000000 |
MINUTE_SECOND | 返回分鐘和秒值 | 3851(2022-03-08 20:38:51) |
HOUR_MICROSECOND | 返回小時(shí)和毫秒值 | 203944000000(2022-03-08 20:39:44) |
HOUR_SECOND | 返回小時(shí)和秒值 | 204025(2022-03-08 20:40:25) |
HOUR_MINUTE | 返回小時(shí)和分鐘值 | 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 | 返回天和小時(shí) | 20(2022-03-08 20:43:54) |
YEAR_MONTH | 返回年和月 | 202203(2022-03-08 20:44:23) |
5. 時(shí)鐘和秒鐘轉(zhuǎn)換的函數(shù)
-- 將time轉(zhuǎn)化為秒并返回結(jié)果值,轉(zhuǎn)化公式為:小時(shí)*3600*分鐘*69+秒 SELECT TIME_TO_SEC('2022-03-08 20:44:23') FROM DUAL; -- 轉(zhuǎn)換結(jié)果:74663 -- seconds轉(zhuǎn)化為時(shí)分秒 SELECT SEC_TO_TIME(74663) FROM DUAL; ? -- 轉(zhuǎn)換結(jié)果:20:44:23
6. 計(jì)算日期和時(shí)間的函數(shù)
6.1 計(jì)算時(shí)間間隔
函數(shù) | 功能 | 備注 |
---|---|---|
DATE_ADD(datetime, INTERVAL expr type),ADDDATE(datetime, INTERVAL expr type) | 計(jì)算時(shí)間間隔(時(shí)間增加) | expr表示時(shí)間間隔,type值見下表 |
DATE_SUB(datetime, INTERVAL expr type),SUBDATE(datetime, INTERVAL expr type) | 計(jì)算時(shí)間間隔(時(shí)間減少) | expr表示時(shí)間間隔,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; -- 返回相同結(jié)果: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; -- 返回相同結(jié)果:2022-03-06 20:43:54 -- 間隔兩和類型的時(shí)間時(shí)可以用冒號(hào)和下劃線,要用單引號(hào) 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; -- 返回相同結(jié)果:2022-03-10 22:43:54
type值如下表:
type間隔類型 | 含義 |
---|---|
HOUR | 小時(shí) |
MINUTE | 分鐘 |
SECOND | 秒 |
YEAR | 年 |
MONTH | 月 |
DAY | 日 |
YEAR_MONTH | 年和月 |
DAY_HOUR | 日和小時(shí) |
DAY_MINUTE | 日和分鐘 |
DAY_SECOND | 日和秒 |
HOUR_MINUTE | 小時(shí)和分鐘 |
HOUR_SECOND | 小時(shí)和秒 |
MINUTE_SECOND | 分鐘和秒 |
6.2 時(shí)間計(jì)算
函數(shù) | 功能 | 返回格式 |
---|---|---|
ADDTIME(time1, expr) | 添加expr到time1并返回結(jié)果 | 2022-03-09 21:44:55 |
SUBTIME(time2, expr) | time1減去expr并返回結(jié)果 | 2022-03-07 19:42:53 |
DATEDIFF(time1, time2) | 返回time1與time2的日期間隔(time1-time2) | -1(天) |
TIMEDIFF(time1, time2) | 返回time1與time2的時(shí)間間隔(time1-time2) | 26:03:45(時(shí)分秒) |
FROM_DAYS(N) | 返回從0000年1月1日起,N天以后的日期 | 0002-09-27 |
TO_DAYS(time) | 返回時(shí)間time距離0000年1月1日的天數(shù) | 738588 |
LAST_DAY(time) | 返回time所在月份的最后一天的日期 | 2022-03-31 |
MAKEDATE(year, n) | 針對(duì)給定年份與所在年份中的天數(shù)返回一個(gè)日期 | 2022-04-10 |
MAKETIME(h, m, s) | 將給定的小時(shí)、分鐘和秒組合成時(shí)間并返回 | 10:20:33 |
PERIOD_ADD(time,n) | 此函數(shù)將給定時(shí)期的給定月份數(shù)添加到格式Y(jié)YMM或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. 日期的格式化與解析
函數(shù) | 功能 | 返回格式 |
---|---|---|
DATE_FORMAT(date,fmt) | 按照字符串fmt格式化日期date值 | |
TIME_FORMAT(time,fmt) | 按照字符串fmt格式化時(shí)間time值 | |
STR_TO_DATE(str, fmt) | 按照字符串fmt對(duì)str進(jìn)行解析,解析為一個(gè)日期 |
fmt格式如下:
格式符 | 說(shuō)明 | 格式符 | 說(shuō)明 |
---|---|---|---|
%Y | 4位數(shù)字表示年份 | %y | 表示兩位數(shù)字的年份 |
%M | 月名表示月份(January,....) | %m | 兩位數(shù)字表示月份 |
%b | 縮寫的月名(Jan.,F(xiàn)eb.,....) | %d | 兩位數(shù)字表示月中的天數(shù) |
%D | 英文后綴表示月中的天數(shù)(1st,2nd,3rd,...) | %c | 數(shù)字表示月份(1,2,3。。) |
%e | 數(shù)字形式表示月中的天數(shù)(1,2,3,4,5.....) | %h | 兩位數(shù)字表示小時(shí),12小時(shí)制(01,02。。) |
%H | 兩位數(shù)字表示小數(shù),24小時(shí)制(01,02..) | %l | 數(shù)字形式表示小時(shí),12小時(shí)制(1,2。。) |
%k | 數(shù)字形式的小時(shí),24小時(shí)制(1,2,3) | %S和%s | 兩位數(shù)字表示秒(00, 01, 02。。) |
%i | 兩位數(shù)字表示分鐘(00,01,02) | %a | 一周中的星期縮寫(Sun) |
%W | 一周中的星期名稱(Sunday...) | ||
%w | 以數(shù)字表示周中的天數(shù)(0=Sunday,1=Monday....) | ||
%j | 以3位數(shù)字表示年中的天數(shù)(001,002...) | %U | 以數(shù)字表示年中的第幾周,(1,2,3。。)其中Sunday為周中第一天 |
%u | 以數(shù)字表示年中的第幾周,(1,2,3。。)其中Monday為周中第一天 | ||
%T | 24小時(shí)制 | %r | 12小時(shí)制 |
%p | AM或PM | %% | 表示% |
舉例如下:
?SELECT DATE_FORMAT(NOW(), '%H:%i:%s'); ?-- 返回結(jié)果:09:58:12
函數(shù) | 功能 | 返回格式 |
---|---|---|
GET_FORMAT(date_type,format_type) | 返回日期字符串的顯示格式 |
format_type取值如下:
舉例如下:
?SELECT GET_FORMAT(DATE, 'USA'); ?-- 返回:%m.%d.%Y
到此這篇關(guān)于MySQL日期時(shí)間函數(shù)知識(shí)匯總的文章就介紹到這了,更多相關(guān)MySQL日期時(shí)間函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mysql5.7 設(shè)置遠(yuǎn)程訪問的實(shí)現(xiàn)
這篇文章主要介紹了mysql5.7 設(shè)置遠(yuǎn)程訪問的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02MySql中 is Null段判斷無(wú)效和IFNULL()失效的解決方案
這篇文章主要介紹了MySql中 is Null段判斷無(wú)效和IFNULL()失效的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06淺談MySQL 億級(jí)數(shù)據(jù)分頁(yè)的優(yōu)化
mysql大數(shù)據(jù)量使用limit分頁(yè),隨著頁(yè)碼的增大,查詢效率越低下。本文就來(lái)介紹一下MySQL 億級(jí)數(shù)據(jù)分頁(yè)的優(yōu)化,感興趣的小伙伴們可以參考一下2021-06-06MySQL 實(shí)現(xiàn)lastInfdexOf的功能案例
這篇文章主要介紹了MySQL 實(shí)現(xiàn)lastInfdexOf的功能案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-12-12MySQL中CREATE DATABASE語(yǔ)句創(chuàng)建數(shù)據(jù)庫(kù)的示例
在MySQL中,可以使用CREATE DATABASE語(yǔ)句創(chuàng)建數(shù)據(jù)庫(kù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-09-09