十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
首先呢根据题目来看实在数据库实现的时候没有考虑全面。在设计阶段可以只有出生日期,但应该能分析到年龄是经常使用的,必须将年龄设计成派生属性,在关系的实现时将其作为表的一个列age,并为其设置默认值year(getdate())-year(出生日期),这样在查询的时候直接查选age即可。建议修改表结构,一劳永逸。其次,如果不修改表结构,也只能使用sql中的日期函数,比如datediff。在这给出sqlserver中的写法:
创新互联建站是一家集网站建设,秭归企业网站建设,秭归品牌网站建设,网站定制,秭归网站建设报价,网络营销,网络优化,秭归网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
select DATEDIFF(yy, GETDATE(), 出生日期) as 'age' from table_name
还有一种办法,就是在应用编程中操作,利用脚本语言进行处理。
我用的是SQL SERVER 分析问题
你的需求要用存储过程的话 方法如下:
把你录入的出生日期作为你的存储过程参数,当然你的存储过程还需要一个表示身份的字段 我假设为ID
create proc ageA (@id int,@birth datetime)
as
begin
update p_info
set year=datediff(year,@Birth,getdate())
where id=@id
end
--但是如果你想全自动完成
就是说 你想往表里插入你的出生日期字段值后 表中的year字段自己算出来的话 有2个方法
1.计算列
CREATE TABLE p_info
(
id INT PRIMARY KEY ,
name VARCHAR(10),
birth DATETIME,
year AS datediff(year,birth,getdate())
)
这么建表就好了
2.触发器
CREATE TRIGGER trIns ON p_info
AFTER INSERT
AS
BEGIN
UPDATE p_info
SET year=datediff(year,d.birth,getdate())
FROM inserted d
WHERE p_info.id=d.id
end
个人强烈介意使用第一种计算列
(1)假设你没有生日这一列alter table add birthday datetime
假设你没有年龄这一列alter table add age float
(2)给某人加入生日1990-1-1,update table set birthday ='1990-1-1' where ....
计算年龄 update table set age =datediff(year,birthday,getdate()) where ....
以上代码sqlserver2008
工具:sqlserver 2008 R2
步骤:
1、给定数据表“学生”,内容如下:
2、现在要将性别为女的年龄增加一岁,使用如下语句:
update 学生 set 年龄=年龄+1 where 性别='女'
3、执行后结果如下,可以看出姓名为“二果”的女生,年龄由原来的19岁增加了1岁,其他两位同学的年龄没有改变。
SqlServer中通过出生日期计算年龄可用year函数。步骤如下:有student表,数据如下,其中birthday列为生日列。
、要计算每个人的年龄,可用如下语句:
查询结果如下,年龄计算结果出现:
美国Microsoft公司推出的一种关系型数据库系统。SQLServer是一个可扩展的、高性能的、为分布式客户机/服务器计算所设计的数据库管理系统,实现了与WindowsNT的有机结合,提供了基于事务的企业级信息管理系统方案。
主要特点是高性能设计,可充分利用WindowsNT的优势。
系统管理先进,支持Windows图形化管理工具,支持本地和远程的系统管理和配置。
强大的事务处理功能,采用各种方法保证数据的完整性。
支持对称多处理器结构、存储过程、ODBC,并具有自主的SQL语言。 SQLServer以其内置的数据复制功能、强大的管理工具、与Internet的紧密集成和开放的系统结构为广大的用户、开发人员和系统集成商提供了一个出众的数据库平台。