一看到有关日期的题目,无论是否复杂,都有些头痛。这部分的函数很多,不熟悉。
今天做到一个简单的题目:
要求:1、查询各学生的年龄
2、字段要求及顺序:学号(sid)、姓名(sname)、年龄
标准答案(会造成误差)
select
sid
,sname
,year(curdate())-year(sage) as age
from student;
两种实现需求的mysql查询语句如下:
select
sid
,sname
,if(month(curdate())-month(sage)>0,year(curdate())-year(sage),year(curdate())-year(sage)-1) as age
from student;
#思路比较简单:
#判断如果当前日期的月份大于出生日期的月份,则直接用年份相减。
#如果当前日期的月份小于出生日期的月份,则用年份想减得到的差还要减1才能得到年龄。
另一个方法的思路是来自于根据出生日期计算年龄。这里的出生日期大都在1990年,因此不存在from_days()中的参数为负数的情况,可以直接使用。
select
sid,
sname,
year(from_days(datediff(curdate(), date(sage)))) as age
from
student;