MYSQL基础之函数:日期,时间函数

上一篇演示一些数值函数还有字符串函数,这个一篇聊日期函数。

获取日期时间

这个主要得到的是当前日期的一些函数。

函数作用
CURDATE() / CURRENT_DATE()返回当前日期,只能包含年月日,默认格式是yyyy-mm-dd
CURTIME() / CURRENT_TIME()返回当前时间,只包含时,分,秒默认格式是hh:mm:ss
NOW() / SYSDATE() / CURRENT_TIMESTAMP() / LOCALTIME() / LOCALTIMESTAMP()返回当前日期时间,默认格式 yyyy-mm-dd hh:mm:ss
UTC_DATE()返回UTC(世界标准时间) 日期 (而我们采用的是东八区 )
UTC_TIME()返回UTC(世界标准时间) 时间而我们采用的是东八区 )

现在具体演示

SELECT CURDATE(),CURRENT_DATE(),CURTIME(),CURRENT_TIME() FROM  DUAL;

在这里插入图片描述

SELECT NOW(),SYSDATE(),CURRENT_TIMESTAMP(),LOCALTIME(),LOCALTIMESTAMP() FROM DUAL;

在这里插入图片描述

SELECT  UTC_DATE(),UTC_TIME() FROM DUAL;

在这里插入图片描述

日期和时间戳的转换

这个很常见操作日期和时间戳的转换。

函数作用
UNIX_TIMESTAMP()以UNIX时间戳的形式返回当前的时间。
UNIX_TIMESTAMP(date)将时间dat以UNIX时间戳的形式返回
FROM_UNIXTIME(timestamp)将UNIX时间戳转换为日期
SELECT UNIX_TIMESTAMP(),UNIX_TIMESTAMP('12,11,22'),FROM_UNIXTIME(UNIX_TIMESTAMP('12,11,22')),UNIX_TIMESTAMP('12-11-22'),FROM_UNIXTIME(UNIX_TIMESTAMP('12-11-22')),UNIX_TIMESTAMP('2021-11-22 14:12:22') FROM DUAL;

在这里插入图片描述

其实这个UNIX_TIMESTAMP涉及到一个隐式转换,为了更好的理解,其参数最好写:yyyy-mm-dd hh:mm:ss格式。

获取月份,星期,天数等函数

函数作用
YEAR(date) / MONTH(date) / DAY(date)返回对应日期的年份/月份/日
HOUR(date) / MINUTE(date) / SECOND(date)返回对应的日期的小时/分钟/秒
MONTHNAME(date)返回这个日期是月份名字(英语)
DAYNAME(date)返回这个日期是星期几名字(英语)
WEEKDAY(date)返回一周种的第几天,其值:0-6 这个是从0开始的,周一为0
QUARTER(date)对应的季度 其值:1-4
WEEK(date) / WEEKOFYEAR(date)返回日期是一年种第二周
DAYOFYEAR(date)返回年中第多少天
DAYOFMONTH(date)返回月中第多少天
DAYOFWEEK(date)返回周中第多少天,不过其周日为1,周一为2

还是通过伪表演示。

SELECT YEAR('2021-12-01 14:12:13'),MONTH('2021-12-01 14:12:13'),DAY('2021-12-01 14:12:13'),HOUR('2021-12-01 14:12:13'),MINUTE('2021-12-01 14:12:13') ,SECOND('2021-12-01 14:12:13')   FROM DUAL;

在这里插入图片描述

SELECT MONTHNAME('2021-12-01 14:12:13'),DAYNAME('2021-12-01 14:12:13'),WEEKDAY('2021-12-01 14:12:13'),QUARTER('2021-12-01 14:12:13') FROM DUAL;

在这里插入图片描述

SELECT WEEK('2021-12-01 14:12:13'),WEEKOFYEAR('2021-12-01 14:12:13'),DAYOFYEAR('2021-12-01 14:12:13'),DAYOFMONTH('2021-12-01 14:12:13'),DAYOFWEEK('2021-12-01 14:12:13') FROM DUAL;

在这里插入图片描述

日期操作函数

这个是对日期进行操作,现在看一下这个函数

函数作用
EXTRACT(type FROM date)返回指定日期中特定的部分,type指返回的值

这个先了解type中参数的意义:

参数作用
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返回年和月

还是伪表演示,但是不会演示所有的,毕竟其用法就是修改type而已。

SELECT EXTRACT(SECOND FROM NOW()),EXTRACT(HOUR FROM NOW()),EXTRACT(DAY FROM NOW()),EXTRACT( DAY_HOUR FROM NOW() ) FROM DUAL;

时间和秒钟转换函数

函数作用
TIME_TO_SEC(time)将时间格式转换为秒,其值:小时*3600+分钟*60+秒
SEC_TO_TIME(seconds)将秒转换为小时分钟秒格式的时间。

现在伪表演示:

SELECT CURTIME(),TIME_TO_SEC(CURTIME()),SEC_TO_TIME(TIME_TO_SEC(CURTIME())) FROM  DUAL;

在这里插入图片描述

计算日期和时间的函数

这些都是对时间和日期进行操作的函数。

日期与间隔

给一个定值日期,然后算出其间隔某单位的时间后或者后的日期。

函数作用
DATE_ADD(date, INTERVAL num type) / ADDDATE(date, INTERVAL num type)date日期再加上num个type单位后的日期
DATE_SUB(date, INTERVAL num type) / SUBDATE(date, INTERVAL num type)date日期再减去num个type单位后的日期

现在看一下参数 type :

参数作用
HOUR间隔单位:小时
MINUTE间隔单位:分钟
SECOND间隔单位:秒
YEAR间隔单位:年
MONTH间隔单位:月
DAY间隔单位:天
YEAR_MONTH间隔单位:年和月
DAY_HOUR间隔单位:天和小时
DAY_MINUTE间隔单位:天和分钟
DAY_SECOND间隔单位:天和秒
HOUR_MINUTE间隔单位:小时和分钟
HOUR_SECOND间隔单位:小时和分钟
MINUTE_SECOND间隔单位:分钟和秒

现在演示一下:

SELECT NOW(),DATE_ADD(NOW(),INTERVAL 1 DAY),SUBDATE(NOW(),INTERVAL 1 DAY),ADDDATE(NOW(),INTERVAL -1 DAY),SUBDATE(NOW(),INTERVAL -1 DAY)      FROM DUAL;

在这里插入图片描述

可以看出两者是相对的两种操作,但是如果各自传递的数值为负数的事后,又可以达到其相同的效果。

SELECT NOW(),DATE_ADD(NOW(),INTERVAL '1_2' YEAR_MONTH) FROM DUAL;

在这里插入图片描述

日期与日期

函数作用
ADDTIME(date,time)返回date加上time后的日期,如果为time是数字的时候,代表的是秒,也可以为负数。还可以格式hh:mm:ss
SUBTIME(date1,time)和ADDTIME刚好相反。
DATEDIFF(date1,date2)返回date1-date2的日期间隔天数。
TIMEDIFF(date1,date2)返回date1-date2的日期间时间间隔。
FROM_DAYS(n)返回距离0000年1月1日n天后的日期
TO_DAYS(date)返回date距离0000年1月1日的天数
LAST_DAY(date)返回date所在月份的最后一天的日期
MAKEDATE(year,n)返回某年year中n天日期
MAKETIME(hour,minute,second)将指定的小时,分钟和秒组成一时间
PERIOD_ADD(time,n)返回time加上n后的时间
SELECT NOW(),ADDTIME(NOW(),' 1:1'),SUBTIME(NOW(),-1100) FROM DUAL;
-- 这个和操作间隔的差不多,都可以通过负数进行反向操作。

在这里插入图片描述

SELECT DATEDIFF('2021-12-12 13:11:11','2021-12-11 10:11:11'), TIMEDIFF('2021-12-12 13:11:11','2021-12-11 10:11:11'),TIMEDIFF('2021-12-12','2021-12-11'),TIMEDIFF('11:3:40','10:1:2') FROM DUAL;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xEPcfnPW-1640092604786)(F:\文档\笔记\数据库\mysql\6_1:函数分类–日期和时间.assets\image-20211221205005232.png)]

SELECT FROM_DAYS(1000),TO_DAYS(NOW()),LAST_DAY(NOW()),MAKEDATE("2021-10-11",4) FROM DUAL;

在这里插入图片描述

日期格式化

前面一直说mysql默认的日期格式是yyyy-mm-dd。但有时候我们会对格式进行调整,也就是修改器呈现的样式,所以就需要下面的函数。

函数作用
DATE_FORMAT(date,fmt)按照字符串fmt格式化日期date值
TIME_FORMAT(time,fmt)按照字符串fmt格式化时间time值
GET_FORMAT(date_type,fmt_type)返回日期字符串显示格式
STR_TO_DATE(str,fmt)按照字符串fmt对str进行解析,解析为一个日期

函数中一直说fmt,fmt自然会用到格式符号,其如下:

参数作用
%a缩写星期名
%b缩写月名
%c月,数值
%D带有英文前缀的月中的天
%d月的天,数值(00-31)
%e月的天,数值(0-31)
%f微秒
%H小时 (00-23)
%h小时 (01-12)
%I小时 (01-12)
%i分钟,数值(00-59)
%j年的天 (001-366)
%k小时 (0-23)
%l小时 (1-12)
%M月名
%m月,数值(00-12)
%pAM 或 PM
%r时间,12-小时(hh:mm:ss AM 或 PM)
%S秒(00-59)
%s秒(00-59)
%T时间, 24-小时 (hh:mm:ss)
%U周 (00-53) 星期日是一周的第一天
%u周 (00-53) 星期一是一周的第一天
%V周 (01-53) 星期日是一周的第一天,与 %X 使用
%v周 (01-53) 星期一是一周的第一天,与 %x 使用
%W星期名
%w周的天 (0=星期日, 6=星期六)
%X年,其中的星期日是周的第一天,4 位,与 %V 使用
%x年,其中的星期一是周的第一天,4 位,与 %v 使用
%Y年,4 位
%y年,2 位

现在开始演示:

SELECT NOW(),DATE_FORMAT(NOW(),'%Y-%M-%D'), DATE_FORMAT(NOW(),'%Y-%m-%d') FROM DUAL;

在这里插入图片描述

SELECT GET_FORMAT(DATE, 'USA') , GET_FORMAT(DATE, 'ISO'),DATE_FORMAT(NOW(),GET_FORMAT(DATE, 'USA'))  FROM DUAL;

在这里插入图片描述

SELECT STR_TO_DATE('2021-December-21st','%Y-%M-%D') FROM DUAL;

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值