平时没不常用,不怎么会
我现在需要写的是一个年龄与工龄字段的修改
当日期到达一月一日时,它的年龄与工龄自动增加1.
有点急..希望大家帮忙...谢谢..
我的想法应该是用作业来完成是吧!
但是我作业以前没用过,有没更好的方法?
大家帮帮忙
[此贴子已经被作者于2006-5-27 17:57:33编辑过]
我的想法应该是用作业来完成是吧!
但是我作业以前没用过,有没更好的方法?
大家帮帮忙
[此贴子已经被作者于2006-5-27 17:57:33编辑过]
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参数,但是考虑到对于闰年可能会出问题(没有测试,纯属想象)。所以用了这个比较复杂条件选择
只不过是多叉条件判断而已,并不复杂
前面一半是建立一个测试用的临时表,后面一个查询是按照北方的老狼的意思写的查询语句,并不适合你用
你的场合不需要判断应该说更简单,但是你要对表更新,所以没有办法,其实用View来处理就可以了。
不懂...
惭愧了...我大学的时候还是数据库专业的呢!!!
晕死..自杀去了
你强