簡體   English   中英

如何使用PL SQL將數據插入到oracle數據庫表中,其中包括一年365天

[英]How to insert data into oracle database table using PL SQL which includes 365 days of the year

我已經有一個內置於oracle的表。 我正在嘗試插入一些看起來像這樣的數據:

我希望數據看起來像這樣

但是,我似乎無法將DATE與ID,YEAR和INDICATOR一起添加。

我設法從1/1/2019 7:00:00 PM-12/31/2019 7:00:00 PM獲取日期。

僅日期示例

碼:

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時,它看起來像這樣:

ID,YEAR和INDICATOR的示例

碼:

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

我試圖將這兩個代碼組合在一起,但是它不起作用。 我還有其他方法可以使它起作用嗎? 還是我做錯了方法? 唯一的更改數據是DATE,因為我需要將其設置為2019年的365天。所有數據的YEAR和INDICATOR都保持不變。

這是你想要的嗎?

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;

甚至更短(假設您可以計算當前年份):

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM