重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
(1)假设你没有生日这一列alter table add birthday datetime
创新互联是一家成都做网站、网站制作,提供网页设计,网站设计,网站制作,建网站,按需设计,网站开发公司,从2013年开始是互联行业建设者,服务者。以提升客户品牌价值为核心业务,全程参与项目的网站策划设计制作,前端开发,后台程序制作以及后期项目运营并提出专业建议和思路。
假设你没有年龄这一列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
declare @date datetime = ''
select @date
试试这句话,时间字段赋值为字符串空,默认时间为1900-01-01 00:00:00.000
SqlServer中通过出生日期计算年龄可用year函数。步骤如下:有student表,数据如下,其中birthday列为生日列。
、要计算每个人的年龄,可用如下语句:
查询结果如下,年龄计算结果出现:
美国Microsoft公司推出的一种关系型数据库系统。SQLServer是一个可扩展的、高性能的、为分布式客户机/服务器计算所设计的数据库管理系统,实现了与WindowsNT的有机结合,提供了基于事务的企业级信息管理系统方案。
主要特点是高性能设计,可充分利用WindowsNT的优势。
系统管理先进,支持Windows图形化管理工具,支持本地和远程的系统管理和配置。
强大的事务处理功能,采用各种方法保证数据的完整性。
支持对称多处理器结构、存储过程、ODBC,并具有自主的SQL语言。 SQLServer以其内置的数据复制功能、强大的管理工具、与Internet的紧密集成和开放的系统结构为广大的用户、开发人员和系统集成商提供了一个出众的数据库平台。
我用的是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
个人强烈介意使用第一种计算列
SqlServer中通过出生日期计算年龄可用year函数。
工具:SqlServer 2008 R2
步骤:
1、有student表,数据如下,其中birthday列为生日列:
2、要计算每个人的年龄,可用如下语句:
select *,year(getdate())-year(birthday) age from student
3、查询结果如下,年龄计算结果出现:
首先呢根据题目来看实在数据库实现的时候没有考虑全面。在设计阶段可以只有出生日期,但应该能分析到年龄是经常使用的,必须将年龄设计成派生属性,在关系的实现时将其作为表的一个列age,并为其设置默认值year(getdate())-year(出生日期),这样在查询的时候直接查选age即可。建议修改表结构,一劳永逸。其次,如果不修改表结构,也只能使用sql中的日期函数,比如datediff。在这给出sqlserver中的写法:
select DATEDIFF(yy, GETDATE(), 出生日期) as 'age' from table_name
还有一种办法,就是在应用编程中操作,利用脚本语言进行处理。