我有一個數據庫,其中包含2個字段DateOfBirth
和Age
,分別用於存儲用戶DOB和年齡。根據DOB匹配服務器日期,我希望Age
列每年自動遞增1。如何每年更新數據庫字段
什麼可能是實現這一目標的最佳方式?我正在使用asp.net和sql server 2008。
我有一個數據庫,其中包含2個字段DateOfBirth
和Age
,分別用於存儲用戶DOB和年齡。根據DOB匹配服務器日期,我希望Age
列每年自動遞增1。如何每年更新數據庫字段
什麼可能是實現這一目標的最佳方式?我正在使用asp.net和sql server 2008。
而不是同時存儲DateOfBirth
和Age
,創建計算年齡表中computed column:
[Age] AS datediff(year, DateOfBirth, getdate())
所以在YOUT創建表:
-- Create Table with computed column
CREATE TABLE [dbo].[CCtest]
(
[id] [int] not NULL,
[DateOfBirth] [datetime] NULL,
-- etc...
[Age] AS datediff(year, DateOfBirth, getdate())
)
GO
如果你想堅持的計算值添加PERSISTED
關鍵字。
一種可能性,如果你想顯示年齡在年和月:
[AgeInDays] AS datediff(day, DateOfBirth, getdate())
然後創建在你的表格式AgeInDays
到年和月視圖。
這裏是另一種可能性,使用[AgeYears]
計算列:
create view vwCCtestAge
AS
select
id,
dateofbirth,
cast([AgeYears] as varchar(4)) + ' years ' +
cast(datediff(month, DateOfBirth, getdate())
- case when (AgeYears > 0) then (AgeYears - 1)*12
else 0
end as varchar(4)) + ' months' as Age
from cctest2
GO
[您應該檢查邊界情況...]
你爲什麼存儲兩者兼而有之?您應該存儲DOB並計算年齡。 – 2011-03-24 05:10:22