1. 程式人生 > >如何使用oracle資料庫查詢指定時間內每一天的日期

如何使用oracle資料庫查詢指定時間內每一天的日期

oracle查詢語句(查詢在2018-02-01至2018-07-31時間段內的每一天日期)
SELECT TO_CHAR(TO_DATE('2018-02-01', 'yyyy-MM-dd') + ROWNUM - 1,'yyyy-MM-dd') as daylistFROM DUALCONNECT BY ROWNUM <=to_date('2018-07-31', 'yyyy-MM-dd') -to_date('2018-02-01', 'yyyy-MM-dd') + 1

說明:ROWNUM是oracle的一個序號列,會根據sql語句的查詢結果自動加上一個排列好順序的序號列,rownum還可以用於分頁,比如select

 g.* from grade g where rownum < 10 order by chinese可以查出前10條根據chinese欄位排序後的記錄,但是需要注意的是,如果查詢語句改為select g.* from grade g where rownum > 10 order by chinese,則返回的查詢結果為空,這是因為rownum總是為滿足條件的記錄從1開始記錄序列號,當找到第一條記錄記錄序列號為1時,此時oracle資料庫對結果進行判斷,rownum為1並不滿足上述條件,oracle捨棄該條記錄繼續往下判斷,第二條rownum還是為1同樣不滿足條件,oracle捨棄了所有的記錄,所以返回的結果為空。正確的sql語句應該這樣寫:

select mygrade.* from(select g.*, rownum rn from grade g order by chinese) mygrade where mygrade.rn>10;

這樣就可以查出第10條語句之後的記錄了。

CONNECT BY用來查詢存在父子關係的資料,也就是樹形結構的資料。

TO_CHAR函式是對返回的資料按照yyyy-MM-dd格式處理