满一年的用y作为单位,不满一年的用m作为单位,不满一个月的用d作为单位:
假设database cms3有一个table为 patient;patient有一个字段为病人的出生日期dob,
要查询病人的年龄(要求是:满一年的用y表示,满一个月不满一年的用m表示,不满一个月的用d表示)
涉及函数:case when then
datediff(date1,date2):返回(date1-date2)天;
convert(value,type):将value转换成规定的格式,具体的格式可以直接百度convert函数;
(case
when datediff(curdate(),dob) >= 365
then concat(CONVERT(datediff(curdate(),dob)/365,signed),'y')
when DATEDIFF(curdate(),dob) >= 30
and DATEDIFF(curdate(),dob) < 365
then concat(CONVERT(datediff(curdate(),dob)/30,signed),'m')
when datediff(curdate(),dob) < 30
then concat(CONVERT(datediff(curdate(),dob),signed),'d')
else '' end)
as Age from patient;
curdate()是获得系统时间(2015-03-06),执行上面执行结果如下图