第一个很简单:
insert into mytable (id,col1,col2...)
select 8002,col1,col2...
where id=8001;第二个比较讨厌,提前三个月大概只能写个函数来处理,但是遇到 2004/05/30 的情况怎么办?2004/02/30 不是一个合法的日期

解决方案 »

  1.   

    2、
    insert into mytable (id,col1,col2...)
    select 8002,...,add_months(col,-3),...
    from ...
    where id=8001;
      

  2.   

    不嫌麻烦的可以用decode来分别处理每个月和润年
      

  3.   

    INSERT INTO table(id,col1,co12,...,col_date,...)
    select 8002,col1,col2,col3,...,add_months(col_date,-3),...)
    from ...
    WHERE id=8001;
      

  4.   

    insert into mytable (id,col1,col2)
    select 8002,col1,add_months(col,-3)
    from mytable 
    where id=8001;
      

  5.   

    insert into mytable (id,col1,col2...)
    select 8002,add_months(col1,-3),add_months(col2,-3)...
    where id=8001;
      

  6.   

    如轻尘的,add_months(date,number)函数可以在日期上增加NUMBER个月,正数为加,负数为减。
      

  7.   

    对不起,我的回答2是错误的
    add_months能够处理我说的情况,见下例SQL> select add_months(to_date('2005/05/30','yyyy-mm-dd'),-3) from dual;ADD_MONTHS(TO_DA
    ----------------
    2005-02-28-00:00