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:54SELECT 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:54SELECT ADDTIME('2022-03-08 20:43:54', '1 1:1:1') FROM DUAL;-- 返回:2022-03-09 21:44:55SELECT SUBTIME('2022-03-08 20:43:54', '1 1:1:1') FROM DUAL;-- 返回:2022-03-07 19:42:53SELECT DATEDIFF('2022-03-08 20:43:54', '2022-03-09 20:43:54') AS A FROM DUAL;-- 返回:-1SELECT TIMEDIFF('2022-03-09 20:43:54', '2022-03-08 18:40:09') AS B FROM DUAL;-- 返回:26:03:45SELECT FROM_DAYS(1000) FROM DUAL;-- 返回:0002-09-27SELECT TO_DAYS('2022-03-09 20:43:54') FROM DUAL;-- 返回:738588SELECT LAST_DAY('2022-03-09 20:43:54') FROM DUAL;-- 返回:2022-03-31SELECT MAKEDATE(2022, 100) FROM DUAL;-- 返回:2022-04-10SELECT MAKETIME(10, 20, 33) FROM DUAL;-- 返回:10:20:33SELECT 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
欢送关注我的公众号:『深海云帆』