在表test内有两个时间,一个是starttime,另一个是endtime,如何在插入数据时自动计算两个的相隔的时间,
当时间差大于一天时,取天数,当时间差小于一天时,取小时,把结果自动赋给totaltime字段。
同时,计算这两个时间是星期几,如starttime是星期一就取一,如endtime是星期二取二,把结果合并起来,
结果为一-二,赋给fromtoweek字段,如果两个都是星期的同一天,就自取一个值,如两个都是星期一,就取一,
赋给fromtoweek字段,请问这个触发器或存储过程该怎么写,最好计算时,先判断starttime和endtime是否为空?

解决方案 »

  1.   

    楼主说是插入数据,那就说明开始时间和结束时间都是同时有数值的。那么可以在插入数据之前就对starttime ,endtime,进行各种判断,然后再同时插入totaltime,fromtoweek就行了。至于触发器也很好写。 请看下面的代码:create or replace trigger TR_test1
      before insert on test1
      for each row
    declareBEGIN
      --首先判断两个时间都不为空
      if :new.endtime is not null and :new.starttime is not null then
        --计算totaltime
        if :new.endtime - :new.starttime > 1 then
          :new.totaltime := :new.endtime - :new.starttime;
        
        else
          :new.totaltime := (:new.ENDTIME - :new.starttime) * 24;
        
        end if;
      end if;
    END;--其他的功能自己实现