我已经有一个用oracle构建的表。我正在尝试插入一些看起来像这样的数据:
但是,我似乎无法将DATE与ID,YEAR和INDICATOR一起添加。
我设法从1/1/2019 7:00:00 PM - 12/31/2019 7:00:00 PM获得DATE。
码:
INSERT INTO TABLE(DATE)
select to_date('01-01-2019 7:00:00 PM', 'DD-MM-YYYY HH:MI:SS PM') + rownum -1 dt from dual
connect by level <= to_date('05-01-2019 7:00:00 PM', 'DD-MM-YYYY HH:MI:SS PM') -
to_date('01-01-2019 7:00:00 PM', 'DD-MM-YYYY HH:MI:SS PM') + 1;
当我排除DATE时,它看起来像这样:
码:
INSERT INTO TABLE (ID, YEAR, INDICATOR)
Values (sequ.nextval, '2019', 'X') ;
我试图将两个代码组合在一起,但它不起作用。还有其他方法可以让它有效吗?或者我做错了吗?唯一的更改数据是DATE,因为我需要它是2019年的365天.YEAR和INDICATOR对于所有数据保持不变。
更短(假设您可以计算当前年份):
insert into table( id, date, year, indicator)
select sequ.nextval, to_date('31-12-2018 07:00:00', 'DD-MM-YYYY HH24:MI:SS') + rownum, 2019, 'X' from all_objects where rownum <= 365
或者,如果您不想使用ALL_OBJECTS表:
insert into table( id, date, year, indicator)
select sequ.nextval, to_date('31-12-2018 07:00:00', 'DD-MM-YYYY HH24:MI:SS') + level, 2019, 'X' from dual connect by level <= 365
这是你想要的吗?
insert into table(id, "date", "year", indicator)
select rownum, dt, extract(year from dt), 'X'
from (select to_date('01-01-2019 7:00:00 PM', 'DD-MM-YYYY HH:MI:SS PM') + rownum - 1 as dt
from dual
connect by level <= to_date('05-01-2019 7:00:00 PM', 'DD-MM-YYYY HH:MI:SS PM') -
to_date('01-01-2019 7:00:00 PM', 'DD-MM-YYYY HH:MI:SS PM') + 1
) t;