如何使用包含一年365天的PL SQL将数据插入到oracle数据库表中

问题描述 投票:-1回答:2

我已经有一个用oracle构建的表。我正在尝试插入一些看起来像这样的数据:

I want the data to look like this

但是,我似乎无法将DATE与ID,YEAR和INDICATOR一起添加。

我设法从1/1/2019 7:00:00 PM - 12/31/2019 7:00:00 PM获得DATE。

Example of only 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时,它看起来像这样:

Example of ID, YEAR and INDICATOR

码:

INSERT INTO TABLE (ID, YEAR, INDICATOR)
Values (sequ.nextval, '2019', 'X') ;

我试图将两个代码组合在一起,但它不起作用。还有其他方法可以让它有效吗?或者我做错了吗?唯一的更改数据是DATE,因为我需要它是2019年的365天.YEAR和INDICATOR对于所有数据保持不变。

sql oracle sql-insert
2个回答
0
投票

更短(假设您可以计算当前年份):

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

1
投票

这是你想要的吗?

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;
© www.soinside.com 2019 - 2024. All rights reserved.