6.2 MySQL时间和日期函数
以前我们就用过now()函数来获得系统时间,用datediff()函数来计算日期相差的天数。我们在计算工龄的时候,让两个日期相减。那么其中的这个now函数返回的就是当前的系统日期和时间。
1. 获取系统时间函数
now()函数,返回的这个日期和时间的格式是这样子的。Y代表的是年份,四个Y的话就代表是四位的这个年份数字大写的M代表的是max月份,然后D代表的是date,就是日期,就是小时、分钟,秒,这个小时默认是24小时制的。这一点大家注意一下,咱们数据库里边默认的最小的时间单位就是秒,不像编程语言,它最小的时间单位是毫秒。
2.日期格式化参数
DATA_FORMAT() 这个函数能帮我们从日期中提炼出非常有用的信息。这个函数的语法如下,第一个参数就是一个日期,第二个参数是一个表达式
占位符 | 作用 | 占位符 | 作用 |
%Y | 年份 | %m | 月份 |
%d | 日期 | %w | 星期(数字) |
%W | 星期(名称) | %j | 本年第几天 |
%U | 本年第几周 | %H | 小时(24) |
%h | 小时(12) | %i | 分钟 |
%s | 秒 | %r | 时间(12) |
%T | 时间(24) |
练习1: 查询员工入职的年份
select ename,date_format(hiredate,"%Y") from t_emp
练习2:利用日期函数,查询明年你的生日是星期几
select date_format("2026-01-01","%w");
练习3:利用日期函数,查询1981年上半年入职的员工有多少人
select
count(*)
from t_emp
where date_format(hiredate,"%Y")=1981
and date_format(hiredate,"%m")<=6
3. 日期计算的注意事项
在mysql数据库里边两个日期是不能直接进行加减乘除运算的,包括日期也不能和数字去加减乘除运算。因为咱们这个日期的运算对应的那个函数,比如说想算一下两个日期之间差了多少天,datediff(),可以把这个相差的天数帮我们算出来。如果说直接用两个日期进行相减的话,那么日期和日期没法直接相减,因为数字才可以加减乘除运算。所以mysql会把这个日期转成数字。
4. 日期偏移计算
首先我们看一下日期偏移计算的这个函数。比如说我现在想计算100天之后是几月几号儿,能不能单纯的把日期加上100,这是不对的。那么日期偏移计算的这个函数叫做date_add()的这个函数既可以往前去偏移日期,也可以往后去偏移日期。比如说一百天之后是几月几号,那你就写上是正100就行了。如果说想看一百天之前是几月几号,那你写一个-100就行了
练习4:查询100天后是几月几号
select date_add(now(),interval 100 day);
练习5:6个月零3天前是几月几号
select date_add(date_add(now(),interval 6 month),interval -3 day);
5. 计算日期之间相隔的天数
DATEDIFF()函数