【sql:练习题 41-45】时间的用法
题目41 :按照出生日期来算,当前月日 < 出生年月的月日则,年龄减一(就是根据出生日期算,每个人的年龄)
分析:要引入时间差函数TIMESTAMPDIFF ,
时间差函数TIMESTAMPDIFF 的用法:
TIMESTAMPDIFF函数,有参数设置,可以精确到天(DAY)、小时(HOUR),分钟(MINUTE)和秒(SECOND),使用起来比datediff函数更加灵活。对于比较的两个时间,时间小的放在前面,时间大的放在后面。
select TIMESTAMPDIFF(DAY, 时间A ,时间B);
意思是比较: 时间A 与时间B相差的天数
那么针对这一题目,我们要用year:
select student.id as 学生编号,student.stdentname as 学生姓名,
TIMESTAMPDIFF(YEAR,student.age,CURDATE()) as 学生年龄
from student
题目42:查询本周过生日的学生
select *
from student
where WEEKOFYEAR(student.age)=WEEKOFYEAR(CURDATE());
WEEKOFYEAR(date)
返回日期的日历星期数作为范围从1到53的数字。WEEKOFYEAR()是一个兼容性函数,等同于WEEK(日期,3)。
43:
查询下周过生日的学生
分析:这题与上一题目是一样的,只不过预期时间晚一周
select *
from student
where WEEKOFYEAR(student.Sage)=WEEKOFYEAR(CURDATE())+1;
44:查询本月过生日的学生
select month(createtime) from life_unite_product --取时间字段的月值
select *
from student
where MONTH(student.age)=MONTH(CURDATE());
45:查询下月过生日的学生
分析:这题与上一题目是一样的,只不过预期时间晚一月
select *
from student
where MONTH(student.Sage)=MONTH(CURDATE())+1;
这一期都是跟时间有关的,时间相关的函数还有很多没有用到,先写这么多吧,后面遇到了再写