如何在同一 table 中插入重复记录,仅将日期更改为下一个日期

How to insert duplicate record in the same table with only change the date to the next date

我有一个要求,我需要复制当前记录并将数据列更新到下一个日期。

我有 table 如下数据:

cobdate     system  b_id    b_type  L_TYPE  lode    symbol
------------------------------------------------------------
20150205    M   N1  F   L   P   T
20150205    M   N1  F   L   P   E
20150205    M   N1  F   L   P   E

我想在同一个 table 中插入第二天的相同数据。 插入后我希望 table 中的数据如下所示:

cobdate     system  b_id    b_type  L_TYPE  lode    symbol
-------------------------------------------------------------
20150206    M   N1  F   L   P   T
20150206    M   N1  F   L   P   E
20150206    M   N1  F   L   P   E

因为cobdate是数字,需要转为日期,加上一天(日期运算),再转回数字:

insert into table(
   cobdate, 
   system,b_id, b_type, L_TYPE, lode, symbol
   )
select 
   to_char(to_date(cobdate,'yyyymmdd')+1,'yyyymmdd'), 
   system,b_id, b_type, L_TYPE, lode, symbol
from table
where cobdate='20150205';

但是,您应该注意日期应该存储为 DATE,而不是数字,不是 varchars,也不能分布在三列或更多列(例如年、月、日)。

强制性责备:您应该将日期存储为 DATEs,而不是 NUMBERs。也就是说,将以数字形式存储的日期加一天应该不难:

INSERT INTO mytable ( cobdate, system, b_id, b_type, l_type, lode, symbol )
SELECT TO_NUMBER( TO_CHAR( TO_DATE(cobdate, 'YYYYMMDD') + 1, 'YYYYMMDD' ) )
     , system, b_id, b_type, l_type, lode, symbol
  FROM mytable
 WHERE cobdate = 20150205;