MySQL第六章(单行函数之日期和时间函数) 详细

一.获取时间和日期

函数功能
CURDATE() / CURRENT_DATE()返回当前日期, 只包含年月日
CURTIME() / CURRENT_TIME()返回当前时间, 只包含时分秒
NOW()返回当前系统日期和时间
UTC_DATE()返回世界标准日期
UTC_TIME()返回世界标准时间
SELECT CURDATE(),CURTIME(),NOW()
FROM DUAL 
/*
CURDATE() |CURTIME()|NOW()              |
----------+---------+-------------------+
2022-09-24| 21:52:14|2022-09-24 21:52:14|
 */

SELECT UTC_DATE(), UTC_TIME()
FROM DUAL
/*
UTC_DATE()|UTC_TIME()|
----------+----------+
2022-09-24|  13:54:24|
 */

二.日期与时间戳

函数功能
UNIX_TIMESTAMP()以时间戳的形式返回当前时间
UNIX_TIMESTAMP(date)将时间date以时间戳的形式返回
FROM_UNIXTIME(timestamp)将时间戳的时间转换为普通格式的时间
SELECT UNIX_TIMESTAMP(), FROM_UNIXTIME(1664028458),
UNIX_TIMESTAMP(NOW()),FROM_UNIXTIME(1664029021)
FROM DUAL
/*
UNIX_TIMESTAMP()|FROM_UNIXTIME(1664028458)|UNIX_TIMESTAMP(NOW())|FROM_UNIXTIME(1664029021)|
----------------+-------------------------+---------------------+-------------------------+
      1664028458|      2022-09-24 22:07:38|           1664029033|      2022-09-24 22:17:01|
*/

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

函数功能
YEAR(date) / MONTH(date) / DAY(date)返回具体的日期值
HOUR(TIME) / MINUTE(time) / SECOND(time)返回具体的时间值
MONTHNAME(date)返回月份
DAYNAME(date)返回星期几
WEEKDAY(date)返回周几, 注意周一是0, 周二是1…周日是6
QUARTER(date)返回日期对应的季度, 1,2,3,4
WEEK(date) / WEEKOFYEAR(date)返回一年中的第几周
DAYOFYEAR(date)返回日期是一年中的第几天
DAYOFMONTH(date)返回日期位于所在月份的第几天
DAYOFWEEK(date)返回周几, 注意周日是1,周一是2…周六是7

四.日期的操作函数

函数功能
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返回天和毫秒值

五.时间和秒钟的转换函数

函数功能
TIME_TO_SEC(time)将time转换为秒并返回结果值
SEC_TO_TIME(seconds)讲seconds描述转换为包含小时,分钟和秒的时间

转换公式为: 小时x 3600+分钟 x 60+秒

SELECT TIME_TO_SEC(curtime()),SEC_TO_TIME(41644)
FROM DUAL 
/*
 TIME_TO_SEC(curtime())|SEC_TO_TIME(41644)|
----------------------+------------------+
                 41686|          11:34:04|
 */

六.计算日期和时间的函数

第一组

函数功能
DATE_ADD(datetime, INTERVAL expr type) / ADDDATE(datetime, INTERVAL expr type)返回与给定日期时间相差INTERVAL时间段的日期时间
DATE_SUB(date, INTERVAL expr type), SUBDATE(date, INTERVAL expr type)返回与date相差INTERVAL时间间隔的日期
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 YEAR), #增加一年
DATE_ADD(NOW(), INTERVAL -1 YEAR), #减一年
DATE_SUB(NOW(), INTERVAL 1 YEAR) #减一年
FROM DUAL

SELECT NOW(), ADDDATE('2022-09-25 14:39:23', INTERVAL 1 DAY) AS ADDDAY,
DATE_ADD(NOW(), INTERVAL '1_1' DAY_HOUR) AS ADDHOUR
FROM DUAL
/*
 NOW()              |ADDDAY             |ADDHOUR            |
-------------------+-------------------+-------------------+
2022-09-25 14:53:49|2022-09-26 14:39:23|2022-09-26 15:53:49|
 */

第二组

函数功能
ADDTIME(time1,time2)返回time1加上time2的时间,当time2为一个数字时,代表的是,可以为负数
SUBTIME(time1,time2)返回time1减去time2的时间,当time2为一个数字时,代表的是,可以为负数
DATEDIFF(date1,date2)返回date1-date2的日期间隔天数
TIMEDIFF(time1,time2)返回time1-time2的时间间隔
FROM_DAYS(N)返回从0000年1月1日起,n天后的日期
TO_DAYS(date)返回日期date距离0000年1月1日的天数
LAST_DAY(date)返回date所在月份的最后一天的日期
MAKEDATE(year,n)针对给定年份与所在年份中的天数返回一个日期
MAKETIME(hour,minute,second)将给定的小时,分钟,秒组合成时间返回
PERIO_ADD(time,n)返回time加上n后的时间

七.日期的格式化与解析

格式化: 日期----->字符串
解 析: 字符串----->日期

这里我们谈的是日期的显示格式化和解析
显示: 不用和原数据的数据与格式一模一样 (如: ‘2022-09-25’与’2022_09_25’)
隐式: 必须和原数据的数据与格式一模一样 (如: ‘2022-09-25’与’2022-09-25’)

函数功能
DATE_FORMAT(date,fmt)按照字符串fmt格式化日期date值
TIME_FORMAT(date,fmt)按照字符串fmt格式化时间date值
STR_TO_DATE(str,fmt)按照字符串fmt对str进行解析,解析为一个日期
格式符(fmt)功能格式符功能
%Y4位数字表示年份%y2位数字表示年份
%M用英文月名表示月份(January…)%m2位数字表示月份(01, 02…)
%b缩写的月名(Jan, Feb…)%c数字表示月份(1,2,3,…)
%D英文后缀表示月中的天数(1st,2nd,3rd)%d2位数字表示月中的天数(01,02…)
%e1位数字表示月中的天数(1,2,3…)
%H2位数字表示小时,24小时制%h2位数字表示小时,12小时制
%k1位数字表示小时,24小时制%l1位数字表示小时,12小时制
%i2位数字表示分钟%S / %s2位数字表示秒
%W一周中的英文名称%w数字表示星期,(0周日, 1周一)
%a一周中的星期缩写(Sun, Mon…)%j以三位数表示年中的天数(001,002)
%U以数字表示年中的第几周,(1,2,3),其中Sunday为周中第一天%u以数字表示年中的第几周,(1,2,3),其中Monday为周中第一天
%T24小时制%r12小时制
%pAM或PM%%表示%
SELECT DATE_FORMAT(CURDATE(),'%Y-%M-%D'),
DATE_FORMAT(CURDATE(),'%Y-%m-%d')
FROM DUAL 
/*
 DATE_FORMAT(CURDATE(),'%Y-%M-%D')|DATE_FORMAT(CURDATE(),'%Y-%m-%d')|
---------------------------------+---------------------------------+
2022-September-25th              |2022-09-25                       |
 */

SELECT STR_TO_DATE('2022-9-25 16:53:12','%Y-%m-%d %H:%i:%s') AS atd
FROM DUAL 
#注意前后一一对应
函数功能
GET_FORMAT(date_type,format_type)返回日期字符串的显示格式
日期类型(date_type)格式化类型(format_type)返回的格式化字符串
DATEUSA%m.%d.%Y
DATEJIS%Y-%m-%d
DATEISO%Y-%m-%d
DATEEUR%d.%m.%Y
DATEINTERNAL%Y%m%d
TIMEUSA%h:%i:%s %p
TIMEJIS%H:%i:%s
TIMEISO%H:%i:%s
TIMEEUR%H.%i.%s
TIMEINTTERNAL%H%i%s
DATETIMEUSA%Y-%m-%d %H.%i.%s
DATETIMEJIS%Y-%m-%d %H.%i.%s
DATETIMEISO%Y-%m-%d %H.%i.%s
DATETIMEEUR%Y-%m-%d %H.%i.%s
DATETIMEINTERNAL%Y%m%d%H%i%s
SELECT GET_FORMAT(DATE, 'USA')
FROM DUAL 
/*
 GET_FORMAT(DATE, 'USA')|
-----------------------+
%m.%d.%Y               |
 */


SELECT DATE_FORMAT(CURDATE(), GET_FORMAT(DATE, 'USA'))
FROM DUAL
/*
 DATE_FORMAT(CURDATE(), GET_FORMAT(DATE, 'USA'))|
-----------------------------------------------+
09.25.2022                                     |
 */
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值