我有一个要求,我需要将当前记录复制到下一个日期的数据列更新。
我有如下表格数据:
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
我想在同一张表中插入第二天的相同数据。 插入后我希望表格中的数据如下所示:
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
答案 0 :(得分:1)
因为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,也不会传播到三列或更多列(去年,月,日)。
答案 1 :(得分:0)
强制性谴责:您应将日期存储为DATE
s,而不是NUMBER
s。也就是说,将一天添加到存储为数字的日期应该不难:
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;