回 帖 发 新 帖 刷新版面

主题:SQL中怎样进行日期比较啊?

写一个日期的比较值,需求是这样的:在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个回复)

沙发

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   
不知道这样可行???

板凳

可能有点考虑的不周全 你自己再加点改改 你就把这个当伪代码吧 有点忙 关于插入的没做 只做了更新的 不知道可以不??

3 楼

谢谢,但是我想在SQL的公式中设置,请看我的新贴子.

4 楼

你试下这样行不行
SELECT DATEDIFF(day, 'A', getdate()) AS '相隔时间'
上面的A就是你说的A字段 getdate()返回当前日期就是B
上面的语句返回一个integer类型的数据 就是当前天减去A的时间
你可以把返回值赋给C

5 楼

datediff() 函数

6 楼

B-datead(year,10,A)
看到這句話,應該理解了吧

7 楼

也可以这样子写的不过都是实现同一个功能。只是容易明白一点。month(getdate())-month(入职日期)这样得到是你所要的那个B的值。然后用case条件就行了。case1
case2 
case3具体的自己再加了

我来回复

您尚未登录,请登录后再回复。点此登录或注册