MySQL内置的日期函数,主要包括获取日期,格式化日期,计算日期
1.获取日期函数
- MySQL内置的获取日期时间的函数:
select
NOW() as '当前日期+时间',
CURDATE() as '当前日期',
CURTIME() as '当前时间';
- 获取具体年月日的函数:
select
YEAR('2022-05-14 15:53:28') AS '年',
MONTH('2022-05-14 15:53:28') AS '月',
DAY('2022-05-14 15:53:28') AS '日',
HOUR('2022-05-14 15:53:28') AS '小时',
MINUTE('2022-05-14 15:53:28') AS '分钟',
SECOND('2022-05-14 15:53:28') AS '秒',
DAYNAME('2022-05-14 15:53:28') AS '星期几',
MONTHNAME('2022-05-14 15:53:28') AS '几月';
实例1:将学生表中,找出生日Sage为1995年的学生记录
select * from students where YEAR(Sage) = 1996
2.格式化日期函数
- 格式化日期函数主要使用 DATE_FORMAT、TIME_FORMAT 函数对日期和时间进行格式化
select
NOW() as '现在时间',
DATE_FORMAT(NOW(),'%y.%m.%d') as '格式化日期',
TIME_FORMAT(NOW(),'%h:%i:%s') as '格式化时间';
其他格式还有:
格式 | 备注 |
---|---|
%Y | 年,显示4位,例如:2022 |
%y | 年,显示2位,例如:22 |
%M | 月,英文名,例如:May |
%m | 月,显示数值(01-12),例如:05 |
%D | 日,带英文后缀,例如:14th |
%d | 日,显示数值(01-31,例如:14 |
%H | 小时(00-23),例如:16 |
%h | 小时(01-12),例如:4 |
%i | 分钟(00-59),例如:11 |
%s | 秒(00-59),例如:45 |
select
NOW() as '现在时间',
DATE_FORMAT(NOW(),'%H')
3.计算日期函数
- 在实际业务中,我们经常需要计算日期和时间,比如在当前日期的基础上减少一天,或者计算日期间隔。
1. 在当前日期的基础上增加或者减少天数
select
NOW() AS '现在时间',
DATE_ADD(NOW(),INTERVAL 1 DAY) as '增加1天',
DATE_SUB(NOW(),INTERVAL 2 DAY) as '减少2天';
还可以增加或者减少年、月、小时、分钟:
select
NOW() AS '现在时间',
DATE_ADD(NOW(),INTERVAL 1 YEAR) as '增加1年',
DATE_SUB(NOW(),INTERVAL 1 MONTH) as '减少1月',
DATE_SUB(NOW(),INTERVAL 1 HOUR) as '减少1小时';
2. 计算两个日期间隔天数
- DATEDIFF函数字计算是是会忽略时间部分,只计算日期差异
select
DATEDIFF('2022-05-14','2021-05-14') as '间隔天数',
DATEDIFF('2022-05-14 01:00','2022-05-13 23:00') as '间隔天数';
实例2:在学生表中,通过学生生日Sage,计算每个学生的年龄。
select
DATE_FORMAT(NOW(),'%Y-%m-%d') as '今天日期',
Sname as '学生姓名',
FLOOR(DATEDIFF(NOW(),Sage)/365) as '学生年龄'
from students;
解析:
通过DATEDIFF函数计算现在时间与学生年龄的相差天数,在除以365得到换算后年数,在使用FLOOR函数取小于年龄的最大整数。