SQL编程之小问题的解决思路

 
•需求说明:
–查询学生出生日期,计算出每个学生的年龄。如果学生年龄大于等于18岁,输出“恭喜,你已经是成年人了。”,否则显示“希望你早日长大。”
 
思路:
 
•获得学生出生日期
–计算年龄
–判断年龄是否大于18岁
–输出相关信息
•关键代码:
–出生日期至当前日期的总天数
•DATEDIFF(DY,  BornDate, GETDATE())
–获得出生日期至当前日期的周岁
•FLOOR(DATEDIFF(DY,BornDate,GETDATE())/365)
--查询学生出生日期,计算出每个学生的年龄。如果学生年龄大于等于18岁,输出“恭喜,你已经是成年人了。”,否则显示“希望你早日长大。
select StuName as '学生姓名', StuBornDate as '出生日期',datediff(yy,StuBornDate,getdate()) as '年龄', '是否成年'=case
when datediff(yy,StuBornDate,getdate())>=18 then '恭喜,你已经成年了!'
else '希望你早日长大!'
end
from dbo.Student

当然,如果是用datediff(yy,StuBornDate,getdate())来获取年龄是很不准确的做法的,那么,我可以是用floor()函数来求解,首先我获取从当前日期到出生日期之间的所有天数DATEDIFF(DY,BornDate,GETDATE()),每年按365天计算DATEDIFF(DY,BornDate,GETDATE())/365得到一个小数的年份,当然我们习惯使用四舍五入的方法秋取整数,所以•FLOOR(DATEDIFF(DY,BornDate,GETDATE())/365) 求出年的整数。那么上段代码可以改成
--查询学生出生日期,计算出每个学生的年龄。如果学生年龄大于等于18岁,输出“恭喜,你已经是成年人了。”,否则显示“希望你早日长大。
select StuName as '学生姓名', StuBornDate as '出生日期',floor(datediff(day,StuBornDate,getdate())/365) as '年龄', '是否成年'=case
when floor(datediff(day,StuBornDate,getdate())/365)>=18 then '恭喜,你已经成年了!'
else '希望你早日长大!'
end
from dbo.Student

是不是更加严谨了??
 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值