问题描述
- person表有字段是birthday,怎么样写语句,能查询出年龄?
-
题目要求 如果年龄一年以上用year来表示,小于一年就用month来表示,年龄小于一个月的,就用day来表示
解决方案
数据库都有类似datediff的函数,可以算出birthday和当前日期相差多少天。获取多少天后。用case when的方式判断该字段(相当于变成语言中的if else)
解决方案二:
如果一个月以30天,一年以365天算的话,可以这样写:
SELECT birthday ,
CASE WHEN DATEDIFF(d, birthday, GETDATE()) >= 365
THEN CONVERT(NVARCHAR(50), DATEDIFF(d, birthday, GETDATE())
/ 365.0) + '年'
WHEN DATEDIFF(d, birthday, GETDATE()) >= 30
AND DATEDIFF(d, birthday, GETDATE()) < 365
THEN CONVERT(NVARCHAR(50), DATEDIFF(d, birthday, GETDATE())
/ 30.0) + '个月'
WHEN DATEDIFF(d, birthday, GETDATE()) < 30
THEN CONVERT(NVARCHAR(50), DATEDIFF(d, birthday, GETDATE()))
+ '天'
ELSE ''
END AS Age ,
*
FROM dbo.person