大家都知道SQL Server里可以写作业,也可以反复执行,
但我刚才去看,他的最大的限度是一个月,但是我要每年的一时间触发怎么办?
我的意思就是说怎么使表中的年龄字段在每年的1月1日增加1呢?
请指教,谢谢
LouisXIV 版主记得上次,你给我讲过用视图,由于当时原因也没过深的研究,有许多地方不懂的地方,还请讲解
以下是引用LouisXIV在2006-5-31 13:19:00的发言:
begin tran
create table #temp1
(
name varchar(10),
birthday smalldatetime
)
insert into #temp1
select
'Peter','1980-5-30'
union
select
'Cathy','1980-5-31'
union
select
'Nancy','1980-6-1'
select *
from #temp1
select name,
case
when datepart(m,getdate())>datepart(m,birthday)
then datediff(year,birthday,getdate())
when datepart(m,getdate())=datepart(m,birthday) and datepart(d,getdate())>=datepart(d,birthday)
then datediff(year,birthday,getdate())
when datepart(m,getdate())=datepart(m,birthday) and datepart(d,getdate())<datepart(d,birthday)
then datediff(year,birthday,getdate())-1
when datepart(m,getdate())<datepart(m,birthday)
then datediff(year,birthday,getdate())-1
end as Age
from #temp1
rollback tran
你可以把最后一个查询建立成一个视图
Case条件应该可以进一步统合一下,如果觉得有必要的话你自己研究一下好了,顺便说一下,本来我考虑用datepart的dy参数,但是考虑到对于闰年可能会出问题(没有测试,纯属想象)。所以用了这个比较复杂条件选择
---------------------
用视图能实现这功能吗?
能讲讲原理吗?
视图能操作数据库(我愚昧勿怪)?