在SQL语言中,输入的是出生年月,如何获取年龄。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在SQL语言中,输入的是出生年月,如何获取年龄。相关的知识,希望对你有一定的参考价值。

你好,最近我在学习数据库 使用的是SQL server 2000;
想问一下:在表格信息中,一个属性是 出生年月:
形式是这样的:1989.01.01;
然后我想想问一下如何,使用使用sql语句 获得 每个对象的年龄;(即当前年—出生年)并在表里增加 年龄这个属性;

alter table 表名 add age int
update 表名 set age=DateDiff(year,birthday,getdate())
如果修改后 还需要往该表里插入数据。可以创建一个触发器 来及时更改年龄
create trigger getAge
on 表名
for insert ,update
as
if update(birthday)
update 表名set age=DateDiff(year,birthday,getdate())
go
----------------
insert into 表名 values ('Ybaby','1990.08.02',null)
update 表名 set birthday=getdate() where id=2
参考技术A aleter table tablename add column age int(3);
update tablename set age=DateDiff(y,birthday,getdate())
birthday指的是数据表中的出生日期字段,getdate()表示当前日期,也可以写做'2009.05.17'。
参考技术B select (date()-出生年月)/365 as 年龄 from 表 参考技术C 用现在的年份减去出生年份就行 参考技术D select datediff(year,'1989.01.01',getdate())

mysql中根据输入的年龄查询符合该年龄出生日期的数据

我用的是java编写代码 有一个查询框key 输入年龄 查询表teacher中符合的出生年份的所有数据输出 表中只有Birthday 是date格式
String key = req.getParameter("key");
《这里转换比较》
String sql = "SELECT * FROM teacher WHERE 。。。。。。。'";
请用最简洁的方法 可用sql语句直接得到最好。。。或者写在一个servlet中 然后调用方法

参考技术A String sql = "SELECT * FROM teacher where to_char(sysdate,'yyyy')-to_char(birthday,'yyyy') = " +key+" \n";追问

sysdate是什么意思呢 后面的birthday是数据库中的那个字段是吧

追答

sysdate是数据库的系统时间,也是date类型

追问

查询不到呢 报错 eclipse说to_char function不存在 我是用一个特定值30岁来查的 数据库中的年份有84 85 86的 这个mysql中有这个方法么

追答

哦哦,这是oracle的写法;sql server 写法是:

substr(convert(varchar(8),getdate(),112),1,4)-
substr(convert(varchar(8),birthday,112),1,4)

追问

阿丫丫丫 我要mysql的。。。。再麻烦下你 = =

追答date_format(NOW(),'%Y') - date_format(birthday,'%Y')

NOW()是获取mysql的系统时间,date_format获取时间的格式 ‘%Y’表示四位年份

本回答被提问者采纳

以上是关于在SQL语言中,输入的是出生年月,如何获取年龄。的主要内容,如果未能解决你的问题,请参考以下文章

在excel中计算平均年龄

mysql中根据输入的年龄查询符合该年龄出生日期的数据

Java 根据出生日期获得年龄

如何用excel计算年龄,要具体到年月日

如何用jQuery实现输入身份证号码后,出生日期自动生成

如何用excel计算出年龄?