问题是这样的,每个员工加入公司有个日期,当这个日期过了30天之后,账户里就自动多出一天假期来。
比如他1/10号进公司,那么2/10号当天他就多了一天假期,以次类推。求这样一个job的写法。

解决方案 »

  1.   

    不用JOB吧,直接用SQL就行了.select datediff(dd , 他进入的日期 , getdate()) / 30 from tb
      

  2.   

    select datediff(day , 他进入的日期 , getdate()) / 30 然后新建个job,在step里添加上这句sql就好了啊
      

  3.   

    ---测试数据---
    declare @tb table(userid int,workdate datetime)
    insert @tb
    select 1,'2008-10-26' union all
    select 2,'2008-2-25' union all
    select 3,'2008-6-28' union all
    select 4,'2008-5-10' ---查询---
    select  
      userid,
      convert(char(10),workdate,120) as workdate,
       case 
         when 
           datediff(day,dateadd(m,-datediff(m,workdate,getdate()),getdate()),workdate)>=0 
         then  datediff(m,workdate,getdate())-1
         else datediff(m,workdate,getdate()) 
       end  as holiday
    from @tb---结果---
    userid      workdate   holiday     
    ----------- ---------- ----------- 
    1           2008-10-26 0
    2           2008-02-25 9
    3           2008-06-28 4
    4           2008-05-10 6(所影响的行数为 4 行)
      

  4.   

    各位,这个假期天数是可以变的,也就是当我请了一天假,这个人的假期就减少了1,所以我在跑job的时候,必须要给每个人加一天,而不能是简单的把他重新set成他应该有的天数,有没有什么好办法啊?
      

  5.   

    在表中添加一列redate,填上此人上次更新假期的时间,在跑JOB的时候,比较当前时间与redate的差值,如果超过一个月,那假期增加一天,并且将redate列增加一个月.这样做的好处是,如果redate与getdate()比较差好几个月,那可以增加几天假期,并将redate列的值刷新成最近一次更新假期的日子.
      

  6.   

    其实不用加字段,把你以前的假期天数字段:holiday(假设你的表里面叫这个字段),换作请假天数用,而他的假期天数就可以通过下面的sql得到:select 假期天数 = datediff(dd , 上班日期 , getdate()) / 30 from tb - holiday