名單

2016-02-11 16 views
1

問題名單

輸入:

START_DATE  END_DATE 

01-FEB-16  03-FEB-16 
01-FEB-16  02-FEB-16 
10-FEB-16  11-FEB-16  

我要生成所有START_DAY和END_DAY之間的日期爲

Output 

01-FEB-16  
02-FEB-16  
03-FEB-16  
10-FEB-16  
11-FEB-16  
+0

檢查http://stackoverflow.com/a/16207828/68868的答案,類似的問題。只需在最外面的選擇中添加一個獨特的,你會得到獨特的日期。 –

+0

請參閱[**行生成器**](https://lalitkumarb.com/2015/04/15/generate-date-month-name-week-number-day-number-between-two-dates-in-oracle -sql /) –

+0

[兩列之間生成日期]可能重複(http://stackoverflow.com/questions/35332130/generating-dates-between-two-columns) – Noel

回答

3

你可以通過做Row Generator技術。

設置

SQL> CREATE TABLE t 
    2 (START_DATE DATE, END_DATE DATE 
    3 ); 

Table created. 

SQL> INSERT INTO t VALUES(DATE '2016-02-01', DATE '2016-02-03'); 

1 row created. 

SQL> INSERT INTO t VALUES(DATE '2016-02-01', DATE '2016-02-02'); 

1 row created. 

SQL> INSERT INTO t VALUES(DATE '2016-02-10', DATE '2016-02-11'); 

1 row created. 

SQL> COMMIT; 

Commit complete. 

查詢

SQL> SELECT DISTINCT TO_CHAR(START_DATE+LEVEL-1, 'DD-MON-YYYY') the_date 
    2 FROM t 
    3 CONNECT BY LEVEL <= END_DATE-START_DATE+1 
    4 ORDER BY the_date 
    5/

THE_DATE 
----------- 
01-FEB-2016 
02-FEB-2016 
03-FEB-2016 
10-FEB-2016 
11-FEB-2016 

SQL> 
+1

@Abhishek什麼錯誤?我發佈了一個工作示例。複製粘貼SQL * Plus會話並顯示你正在做什麼,就像我向你展示的那樣。 –

+0

對不起哥們。它工作正常。上次執行時錯過了一些東西。非常辛苦地工作了2天,但沒有得到結果。最後我得到了。非常感謝 – Abhishek

+0

@Abhishek不客氣。請將其標記爲已回答,也會幫助其他人! –