(1)假設(shè)你沒有生日這一列alter table add birthday datetime
創(chuàng)新互聯(lián)是一家成都做網(wǎng)站、網(wǎng)站制作,提供網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),網(wǎng)站制作,建網(wǎng)站,按需設(shè)計(jì),網(wǎng)站開發(fā)公司,從2013年開始是互聯(lián)行業(yè)建設(shè)者,服務(wù)者。以提升客戶品牌價值為核心業(yè)務(wù),全程參與項(xiàng)目的網(wǎng)站策劃設(shè)計(jì)制作,前端開發(fā),后臺程序制作以及后期項(xiàng)目運(yùn)營并提出專業(yè)建議和思路。
假設(shè)你沒有年齡這一列alter table add age float
(2)給某人加入生日1990-1-1,update table set birthday ='1990-1-1' where ....
計(jì)算年齡 update table set age =datediff(year,birthday,getdate()) where ....
以上代碼sqlserver2008
declare @date datetime = ''
select @date
試試這句話,時間字段賦值為字符串空,默認(rèn)時間為1900-01-01 00:00:00.000
SqlServer中通過出生日期計(jì)算年齡可用year函數(shù)。步驟如下:有student表,數(shù)據(jù)如下,其中birthday列為生日列。
、要計(jì)算每個人的年齡,可用如下語句:
查詢結(jié)果如下,年齡計(jì)算結(jié)果出現(xiàn):
美國Microsoft公司推出的一種關(guān)系型數(shù)據(jù)庫系統(tǒng)。SQLServer是一個可擴(kuò)展的、高性能的、為分布式客戶機(jī)/服務(wù)器計(jì)算所設(shè)計(jì)的數(shù)據(jù)庫管理系統(tǒng),實(shí)現(xiàn)了與WindowsNT的有機(jī)結(jié)合,提供了基于事務(wù)的企業(yè)級信息管理系統(tǒng)方案。
主要特點(diǎn)是高性能設(shè)計(jì),可充分利用WindowsNT的優(yōu)勢。
系統(tǒng)管理先進(jìn),支持Windows圖形化管理工具,支持本地和遠(yuǎn)程的系統(tǒng)管理和配置。
強(qiáng)大的事務(wù)處理功能,采用各種方法保證數(shù)據(jù)的完整性。
支持對稱多處理器結(jié)構(gòu)、存儲過程、ODBC,并具有自主的SQL語言。 SQLServer以其內(nèi)置的數(shù)據(jù)復(fù)制功能、強(qiáng)大的管理工具、與Internet的緊密集成和開放的系統(tǒng)結(jié)構(gòu)為廣大的用戶、開發(fā)人員和系統(tǒng)集成商提供了一個出眾的數(shù)據(jù)庫平臺。
我用的是SQL SERVER 分析問題
你的需求要用存儲過程的話 方法如下:
把你錄入的出生日期作為你的存儲過程參數(shù),當(dāng)然你的存儲過程還需要一個表示身份的字段 我假設(shè)為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.計(jì)算列
CREATE TABLE p_info
(
id INT PRIMARY KEY ,
name VARCHAR(10),
birth DATETIME,
year AS datediff(year,birth,getdate())
)
這么建表就好了
2.觸發(fā)器
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
個人強(qiáng)烈介意使用第一種計(jì)算列
SqlServer中通過出生日期計(jì)算年齡可用year函數(shù)。
工具:SqlServer 2008 R2
步驟:
1、有student表,數(shù)據(jù)如下,其中birthday列為生日列:
2、要計(jì)算每個人的年齡,可用如下語句:
select?*,year(getdate())-year(birthday)?age?from?student
3、查詢結(jié)果如下,年齡計(jì)算結(jié)果出現(xiàn):
首先呢根據(jù)題目來看實(shí)在數(shù)據(jù)庫實(shí)現(xiàn)的時候沒有考慮全面。在設(shè)計(jì)階段可以只有出生日期,但應(yīng)該能分析到年齡是經(jīng)常使用的,必須將年齡設(shè)計(jì)成派生屬性,在關(guān)系的實(shí)現(xiàn)時將其作為表的一個列age,并為其設(shè)置默認(rèn)值year(getdate())-year(出生日期),這樣在查詢的時候直接查選age即可。建議修改表結(jié)構(gòu),一勞永逸。其次,如果不修改表結(jié)構(gòu),也只能使用sql中的日期函數(shù),比如datediff。在這給出sqlserver中的寫法:
select DATEDIFF(yy, GETDATE(), 出生日期) as 'age' from table_name
還有一種辦法,就是在應(yīng)用編程中操作,利用腳本語言進(jìn)行處理。