主题:SQL中怎样进行日期比较啊?
好好学习天天向上
[专家分:100] 发布于 2006-03-17 15:13:00
写一个日期的比较值,需求是这样的:在SQL中,A字段是入职日期,B字段是当前日期,C等于:如果B字段减去A字段,小于3个月,则C=10;如果B字段减去A字段,大于3个月小于12个月,则C=20;如果B字段减去A字段,大于12个月小于24个月,则C=30.其实就是判断该人入职时间长短,来发放福利费而已.
想要达到的目的,我已经在SQL中建立好表,现在只想把C字段的公式补上,用IF了几次都是错误,请高手指点下应该怎样写啊.
谢谢各位了.
回复列表 (共7个回复)
沙发
无法阻挡 [专家分:890] 发布于 2006-03-19 13:35:00
declare @a int
declare @b int
creat procedure fulipro on table1
@x int
@t int
if @a<3
update table1 set fuli=0 where yugongid=@y
else if 3<@a<12
update table1 set fuli=10 where yugongid=@y
else if 12<@a<24
update table1 set fuli=20 where yugongid=@y
go
creat trigger fuli on table1
for update,insert
as
if update(ruzhiriqi)
begin
set @a=(select datediff(mm,(select ruzhiriqi from inserted),getdate()))
set @b=(select yugongid from inserted)
exec mypro @a,@b
end
go
不知道这样可行???
板凳
无法阻挡 [专家分:890] 发布于 2006-03-19 13:36:00
可能有点考虑的不周全 你自己再加点改改 你就把这个当伪代码吧 有点忙 关于插入的没做 只做了更新的 不知道可以不??
3 楼
好好学习天天向上 [专家分:100] 发布于 2006-03-22 10:40:00
谢谢,但是我想在SQL的公式中设置,请看我的新贴子.
4 楼
yxd0311 [专家分:0] 发布于 2006-04-10 11:20:00
你试下这样行不行
SELECT DATEDIFF(day, 'A', getdate()) AS '相隔时间'
上面的A就是你说的A字段 getdate()返回当前日期就是B
上面的语句返回一个integer类型的数据 就是当前天减去A的时间
你可以把返回值赋给C
5 楼
wbyoulove [专家分:4830] 发布于 2006-04-12 00:22:00
datediff() 函数
6 楼
ProgrammerLee [专家分:0] 发布于 2006-04-15 16:56:00
B-datead(year,10,A)
看到這句話,應該理解了吧
7 楼
rr5566 [专家分:460] 发布于 2006-05-11 10:15:00
也可以这样子写的不过都是实现同一个功能。只是容易明白一点。month(getdate())-month(入职日期)这样得到是你所要的那个B的值。然后用case条件就行了。case1
case2
case3具体的自己再加了
我来回复