一道关于生日计算的简单mysql题目

2023-07-21  本文已影响0人  我住永安当

一看到有关日期的题目,无论是否复杂,都有些头痛。这部分的函数很多,不熟悉。
今天做到一个简单的题目:
要求: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才能得到年龄。
image.png
有差异的一行数据

另一个方法的思路是来自于根据出生日期计算年龄。这里的出生日期大都在1990年,因此不存在from_days()中的参数为负数的情况,可以直接使用。

select
  sid,
  sname,
  year(from_days(datediff(curdate(), date(sage)))) as age
from
  student;

有差异的一行数据
上一篇 下一篇

猜你喜欢

热点阅读