2014-09-01 62 views
0

自动更新D.O.B专栏的年代专栏。每当sql服务器浏览 列应该能够自行更新。所以我认为它应该在创建表或修改表时写入。使用“时间戳”怎么样? 。我如何克服?更新时代专栏D.O.B专栏自动

Name  dob  age 

aaa  12-JUN-1985 

bbb  15-MAY-1991 

ccc  23-AUG-2000 

表应该是

Name  dob  age 

aaa  12-JUN-1985 28 

bbb  15-MAY-1991 22 

ccc  23-AUG-2000 13 
+1

不要存储年龄,有没必要。你有使用这些信息的应用程序或其他代码吗?如果是这样,你的应用代码可以解决。否则,如果它仅用于SQL进行报告,则创建一个计算年龄的视图。没有必要存储它。 – Tanner 2014-09-01 08:39:34

回答

5

您可以创建一个computed column计算时代:

ALTER TABLE YourTable 
ADD Age AS CAST(DATEDIFF(YEAR, dob, GETDATE()) AS TINYINT) 

请注意,这个基本的年龄计算并不精确,它会呈现不正确结果是今年的一部分。一个好的计算有点复杂,必须考虑日期(也可能是闰年),我会把它留给你,或者你可以看看这个:How to calculate age (in years) based on Date of Birth and getDate()