一张人员信息表里有一人生日(Birthday)列,跟据这个列,算出该人员的年龄
datediff(year,birthday,getdate())
例:birthday = '2003-3-8'
getDate()= '2008-7-7'
结果为:5
这样结果是会返回该人员的大概年龄,但不精确.不会精确到月或日.
按照上面测试的日期,该人员的实际年龄应该还不满5岁。在需要精确年龄的时候,就会有错.
FLOOR(datediff(DY,birthday,getdate())/365.25)
FLOOR函数:
FLOOR(expr) 返回小于或等于expr的最大整数.FLOOR(1.1)返回1,FLOOR(-1.1)返回-2,FLOOR(1)返回1
这样就可以精确算出,该人员当前实际年龄了.
birthday = '2000-7-8'
getdate()= '2007-7-7'
算出结果为:6
在
Oracle
中,要获得日期中的年份,例如把sysdate中的年份取出来。
一种常用的方法是:to_number(to_char(sysdate,'yyyy'))
还有一种更好的方法,那就是使用oracle提供的Extract函数,使用方法是:
extract(year from sysdate) ,此方法获得的结果是数值型的 ,这种方法省掉了类型转换,更加简洁。
相应的,要取得月份或日,可以用extract (month from sysdate) 和extract (day from sysdate)
第一种:一张人员信息表里有一人生日(Birthday)列,跟据这个列,算出该人员的年龄datediff(year,birthday,getdate())例:birthday = '2003-3-8'getDate()= '2008-7-7'结果为:5这样结果是会返回该人员的大概年龄,但不精确.不会精确到月或日.按照上面测试的日期,该人员的实际年龄应该还不满5...
id int identity(1,1) PRIMARY key ,
name nvarchar(50) not null,
birthday datetime not null DEFAULT('2010-10-01')
2.当前
日期
是2020-04-24,往表
中
插入三条数据
INSERT into birthday_test VALUES ('张三','2010-04-23')
<思路>在
SQL
中
,一般可以使用year函数来
计算
已知
出生日期
求
年龄
的问题
SELECT sid,sname, ssex,sage, year(getdate())-year(sage) as age
from student;
SELECT sid,sname, ssex,sage, year(getdate())-year(sage) as age
from student;
my
sql
数据库
获取
年龄
:TIMESTAMPDIFF(YEAR, [
出生日期
字段], CURDATE())
select * from (select name 姓名,TIMESTAMPDIFF(YEAR, [
出生日期
字段], CURDATE())
年龄
from [表名] )a;
sql
server数据...
SQL
是一种数据查询和管理的语言,可以根据
出生日期
计算
一个人的
年龄
。在
SQL
中
,可以使用函数来
计算
年龄
,比如DATEDIFF函数和YEAR函数。
其
中
,DATEDIFF函数可以
计算
两个
日期
之间的时间差, YEAR函数可以提取
日期
中
的
年份
。我们可以使用这两个函数来
计算
年龄
。
具体的
SQL
查询语句为:
SELECT DATEDIFF(year, birthdate, GETDATE()) - CASE
WHEN (MONTH(birthdate) > MONTH(getdate()) OR
(MONTH(birthdate) = MONTH(getdate()) AND DAY(birthdate) > DAY(getdate()))) THEN 1
ELSE 0
END AS age
FROM person
其
中
,birthdate是
出生日期
的列名,GETDATE()
获取
当前
日期
,DATEDIFF
计算
年份
之差,CASE语句用来判断出生
月份
和当前
月份
,如果当前
月份
小于出生
月份
则
年龄
减一,否则不变。
以上就是使用
SQL
根据
出生日期
计算
年龄
的方法。