今天在sql server论坛看到一个帖子:如何让数据库中某一个字段随时间自动更新?
那么如何来实现呢?
可以用触发器,那么先要写个触发器,但是可能会影响性能。
想了想,其实用sql server提供的 计算列,就可以轻松实现这个需求。
例子如下:
员工表,有字段:人员id,姓名,人员编码,人员入职时间,现在希望要增加一个字段显示工龄,就是在公司工作的时间,如 1.5年。
if object_id('emp') is not null
drop table emp
go
CREATE TABLE emp
(
emp_id INT PRIMARY KEY ,
emp_name NVARCHAR(10) not null,
emp_code VARCHAR(20) not null,
hire_date DATE not null
);
go
INSERT INTO emp
VALUES ( 1, N'张三', '0000000100', '2015-01-01' );
实现方法就是新增一个计算列:
alter table emp
add employment_time as cast(datediff(month,hire_date,GETDATE())*1.0/12 as numeric(8,1));
select * from emp;
查询结果:
何让数据库中某一个字段随时间自动更新