MySql日期函数

本文由犀牛真皮分享,介绍了MySQL中的日期和时间函数,包括获取日期、时间、日期时间的操作、计算以及格式化等功能,通过示例详细解析了如NOW()、CURDATE()、ADDDATE()、DATE_FORMAT()等函数的使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

大家好,我是犀牛真皮,废话不多刷,今天来水一波MySql的日期函数。

最近在看mysql的基础知识,我们知道mysql的时间函数真是太多了,这里稍微总结下基本的日期函数有哪些,以及用法示例。

1、获取日期或时间的函数:
NOW()、SYSDATE() 返回指定日期

SELECT NOW(),SYSDATE();    
+---------------------+---------------------+
| NOW()               | SYSDATE()           |
+---------------------+---------------------+
| 2021-07-18 23:23:40 | 2021-07-18 23:23:40 |
+---------------------+---------------------+


CURDATE() 、CURRENT_DATE() 获取当前日期
CURRENT_TIME()、CURTIME() 获取当前时间
CURRENT_TIMESTAMP() 获取当前日期和时间
YEAR(d)、MONTH(d)、WEEK(d)、DAY(d) 返回当前日期d的年份、月份、周数、天数
    - select YEAR(now()),MONTH(now()),WEEK(now()),DAY(now());
HOUR(t)、MINUTE(t)、SECOND(t) 返回t中的时、分、秒
    - select HOUR(curtime()),MINUTE(curtime()),SECOND(curtime());
DAYNAME(d) 返回日期d的星期几
DAYOFMONTH(d) 返回d是当前月份的第几天
DAYOFWEEK(d) 返回日期d是星期几,注意返回的是数字(1 表示星期日,2 表示星期一,以此类推)
DAYOFYEAR(d) 返回日期d是本年的第几天
    - select  DAYNAME(sysdate()),DAYOFMONTH(sysdate()),DAYOFWEEK(sysdate()),DAYOFYEAR(sysdate());
WEEKDAY(d)     计算日期d是星期几,注意返回的数字(    日期 d 是星期几,0 表示星期一,1 表示星期二,以此类推)
    - select WEEKDAY(now());
FROM_DAYS(n) 返回从0000-01-01开始到n天的日期
    - SELECT FROM_DAYS(733333);
TO_DAYS(d)  返回从0000-01-01开始到n天的日期
    - select TO_DAYS(NOW());    
LAST_DAY(d) 返回日期d这月的最后一天的日期
    - select LAST_DAY(now());    
LOCALTIME()、LOCALTIMESTAMP() 返回当前的日期和时间    
    - select LOCALTIME(),LOCALTIMESTAMP();
QUARTER(d) 返回日期d是第几季度
    - select QUARTER(CURDATE())
TIME(expr) 提取传入表达式的时间部分
    - select TIME(NOW());

2、计算日期或者时间的函数:
ADDDATE(d, n) 计算日期d加上n的日期
ADDTIME(t, n) 计算时间t加上时间表达式n的时间
DATE() 从日期或者日期时间表达式中提取出日期
DATEDIFF(d1, d2) 计算d1-d2的相差天数
DATE_ADD(d, INTERVAL expr type) 计算起始日期 d 加上一个时间段后的日期,type的类型支持YEAR、MONTH、DAY、MINUTE、SECOND、QUARTER等等
DATE_SUB(date,INTERVAL expr type) 减去指定日期的时间间隔
    - select DATE_SUB(CURDATE(),INTERVAL 2 day);

3、格式化日期或时间的函数:
DATE_FOTMAT(d, f) 按表达式f的要求格式化日期d
    - select DATE_FORMAT(SYSDATE(),'%Y-%m-%d %r');
TIME_FORMAT(t, f) 按表达式f的要求格式化时间t
    - select TIME_FORMAT(curtime(),'%r');    
EXTRACT(type FROM d) 从日期d中获取指定的值,并返回指定的type类型
    - select extract(day from now());
MAKEDATE(year,day-of-year) 基于给定参数年份year和当年第day天的日期
    - select MAKEDATE(2021,32);
MAKETIME(hour,minute,second) 组合指定的时分秒
    - SELECT MAKETIME(12,33,56);
PERIOD_ADD(period,number) 返回日期为年月period加上月份number的日期    
    - SELECT PERIOD_ADD(201707,4); 
PERIOD_DIFF(period1,period2) 返回两个时间段的月份差
    - select PERIOD_DIFF(202107,202103);
TIMEDIFF(t1,t2) 计算时间t1-t2的差值
    - select TIMEDIFF('23:11:12','22:34:55');        
SEC_TO_TIME(s) 返回s秒转换为时分秒格式的时间
    - SELECT SEC_TO_TIME(12345);
TIME_TO_SEC(t) 将时间t转换为秒
    - SELECT TIME_TO_SEC(curtime());
STR_TO_DATE(String, format_mask) 将字符串转为日期
    - select STR_TO_DATE('July 18 2021','%M %d %Y');    
SUBDATE(d, n) 返回日期d减去天数n的日期    
    - select SUBDATE(CURDATE(),60);
SUBTIME(t, n) 返回时间d减去n秒的时间
    - SELECT SUBTIME('2021-07-18 23:02:33',6);
TIMESTAMP(expression, interval) 一个参数时返回当前日期或时间,两个参数时,相加展示    
    - SELECT TIMESTAMP(CURDATE().CURTIME());
WEEKOFYEAR(d) 计算日期d时本年度的第几个星期,范围在0-53
    - SELECT WEEKOFYEAR(now());

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值