MySQL日期時間函數知識匯總
更新時間:2022年03月16日 10:41:37 作者:返回主頁深海云帆
這篇文章主要介紹了MySQL日期時間函數知識匯總,這不同數據庫之間基本相同,只會有個別函數的差異。下文詳細介紹,需要的小伙伴可以參考一下
1. 獲取時間
| 函數 | 功能 | 返回格式 |
|---|---|---|
| CURDATE(), CURRENT_DATE() | 返回當前日期,只包含年、月、日 | 2022-03-08 |
| CURTIME(), CURRENT_TIME() | 返回當前時間,只包含時、分、秒 | 19:35:46 |
| NOW(), SYSDATE(), CURRENT_TIMESTAMP(), LOCALTIME(), LOCALTIMESTAMP() | 返回當前系統(tǒng)日期和時間 | 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-4 | 1 |
| 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:236. 計算日期和時間的函數
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:54type值如下表:
| 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;
-- 返回:202203097. 日期的格式化與解析
| 函數 | 功能 | 返回格式 |
|---|---|---|
| DATE_FORMAT(date,fmt) | 按照字符串fmt格式化日期date值 | |
| TIME_FORMAT(time,fmt) | 按照字符串fmt格式化時間time值 | |
| STR_TO_DATE(str, fmt) | 按照字符串fmt對str進行解析,解析為一個日期 |
fmt格式如下:
| 格式符 | 說明 | 格式符 | 說明 |
|---|---|---|---|
| %Y | 4位數字表示年份 | %y | 表示兩位數字的年份 |
| %M | 月名表示月份(January,....) | %m | 兩位數字表示月份 |
| %b | 縮寫的月名(Jan.,F(xiàn)eb.,....) | %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為周中第一天 | ||
| %T | 24小時制 | %r | 12小時制 |
| %p | AM或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日期時間函數內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Windows系統(tǒng)下MySQL8.0.21安裝教程(圖文詳解)
這篇文章主要介紹了Windows系統(tǒng)下MySQL8.0.21安裝教程,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-08-08
ERROR 1862 (HY000): Your password has expired. To log in you
當你在安裝 MySQL過程中,通過mysqld --initialize 初始化 mysql 操作后,生成臨時密碼后,沒有直接進行 MySQL連接,中途重啟服務或者重啟機器等,導致密碼失效問題,怎么處理呢,感興趣的朋友一起看看吧2019-11-11
Windows10下mysql 8.0.19 安裝配置方法圖文教程
這篇文章主要為大家詳細介紹了Windows10下mysql 8.0.19 安裝配置方法圖文教程,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-02-02
mysql?in索引慢查詢優(yōu)化實現(xiàn)步驟解析
這篇文章主要為大家介紹了mysql?in慢查詢優(yōu)化實現(xiàn)步驟的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-05-05

