SqlServer中的自动更新时间

时间:2017-08-09 05:43:52

标签: sql-server sql-server-2008

我的员工数据在我的数据库中,如果我插入员工数据,它将自动计算我在存储过程中写的年龄,但如果员工的出生日期可能是明天,如果我检索员工的详细信息将是自动显示更新的

代码:

Declare @age float 
set @age=(select DATEDIFF(YYYY,@DATE_OF_BIRTH,
GETDATE())) update Employee_details set AGE=@AGE where
BADGE_NO=@BADGE_NO

1 个答案:

答案 0 :(得分:3)

使用SQL Server,如果存储出生日期,则可以将年龄添加为计算列:

CREATE TABLE employees (id INT, name VARCHAR(25), dob DATE, 
    age AS (CONVERT(INT,CONVERT(CHAR(8),GETDATE(),112))-CONVERT(CHAR(8),dob,112))/10000)
INSERT INTO employees (id, name, dob) VALUES (1, 'Max Smith', '12/31/1983')
INSERT INTO employees (id, name, dob) VALUES (1, 'Scott Smith', '2/8/1982')
INSERT INTO employees (id, name, dob) VALUES (1, 'Carolyn Smith', '11/1/1985')

请注意年龄栏声明 - 并感谢cars10m提供此计算! - 根据出生日期栏和当前日期准确地给出年龄:

age AS (CONVERT(INT,CONVERT(CHAR(8),GETDATE(),112))-CONVERT(CHAR(8),dob,112))/10000)

从员工中选择*给你(截至今天,2017年8月9日):

id    name          dob         age
1     Max Smith     1983-12-31  33
1     Scott Smith   1982-02-08  35
1     Carolyn Smith 1985-11-01  31

使用计算列!