SQL入门之第二十讲——SQL日期函数介绍

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函数取小于年龄的最大整数。

经验分享 程序员 微信小程序 职场和发展