2015-05-17 44 views
2

任何人都可以請讓我知道如何獲取本月的第一個日期列表直到當前日期爲止嗎?可以說我想獲得2015年5月的第一天,直到5月17日到2015年如何在oracle中獲取本月的第一個日期直到當前日期在oracle中

的格式應該是這樣的:DDMMYYYY

+0

不清楚你的意思是「列表」。請你詳細說明一下嗎? –

+0

列表含義表示結果將顯示第一個日期,直到當前日期與年和月橫向 例如, 日 - 月 - 年 2015年1月5日 2015年2月5日 ..... ..... ......直到當前的日期17-05-2015 – Iftekhar

回答

1

你可以connect bylevel僞列,並通過它concatinating當前的月份和年份格式化這個結果:

SELECT  TO_CHAR(LEVEL, '09') || TO_CHAR(SYSDATE, 'mmyyyy') 
FROM  dual 
CONNECT BY LEVEL < TO_NUMBER(TO_CHAR(SYSDATE, 'dd')) 

ED IT:
要在本月顯示所有的日子裏,你可以使用last_day功能檢查在一個月的天數:

SELECT  TO_CHAR(LEVEL, '09') || TO_CHAR(SYSDATE, 'mmyyyy') 
FROM  dual 
CONNECT BY LEVEL < TO_NUMBER(TO_CHAR(LAST_DAY(SYSDATE), 'dd')) 
+0

感謝的快速反應。我明天將在工作中嘗試一下,並告訴你它是否有效。:) – Iftekhar

+0

我剛剛在SQL小提琴上運行查詢,我完全得到了我所需要的。如果我想查看當前月份的更多日期,那麼我應該怎麼做呢?我的意思是5月17日之後的日期。 謝謝。 – Iftekhar

+0

@Itetekhar你可以在'connect by'條款中修改條件 – Mureinik

2

SQL Fiddle

從拿到這個月的日子開始當天:

查詢1

SELECT TRUNC(SYSDATE, 'MM') + LEVEL - 1 AS DATE_OF_CURRENT_MONTH 
FROM DUAL 
CONNECT BY LEVEL <= EXTRACT(DAY FROM SYSDATE) 

Results

| DATE_OF_CURRENT_MONTH | 
|-----------------------| 
| May, 01 2015 00:00:00 | 
| May, 02 2015 00:00:00 | 
| May, 03 2015 00:00:00 | 
| May, 04 2015 00:00:00 | 
|   .   | 
|   .   | 
|   .   | 
| May, 15 2015 00:00:00 | 
| May, 16 2015 00:00:00 | 
| May, 17 2015 00:00:00 | 

查詢2

WITH CTE(DATE_OF_CURRENT_MONTH, Lvl) AS 
(
    SELECT TRUNC(SYSDATE, 'MM'), 1 
    FROM DUAL 
    UNION ALL 
    SELECT TRUNC(SYSDATE, 'MM') + Lvl, Lvl + 1 
    FROM CTE 
    WHERE Lvl < EXTRACT(DAY FROM SYSDATE) 
) 
SELECT DATE_OF_CURRENT_MONTH FROM CTE 

Results

| DATE_OF_CURRENT_MONTH | 
|-----------------------| 
| May, 01 2015 00:00:00 | 
| May, 02 2015 00:00:00 | 
| May, 03 2015 00:00:00 | 
| May, 04 2015 00:00:00 | 
|   .   | 
|   .   | 
|   .   | 
| May, 15 2015 00:00:00 | 
| May, 16 2015 00:00:00 | 
| May, 17 2015 00:00:00 | 

爲了得到這個月的所有天:

查詢3

SELECT TRUNC(SYSDATE, 'MM') + LEVEL - 1 AS DATE_OF_CURRENT_MONTH 
FROM DUAL 
CONNECT BY LEVEL <= EXTRACT(DAY FROM LAST_DAY(SYSDATE)) 

Results

| DATE_OF_CURRENT_MONTH | 
|-----------------------| 
| May, 01 2015 00:00:00 | 
| May, 02 2015 00:00:00 | 
| May, 03 2015 00:00:00 | 
| May, 04 2015 00:00:00 | 
|   .   | 
|   .   | 
|   .   | 
| May, 29 2015 00:00:00 | 
| May, 30 2015 00:00:00 | 
| May, 31 2015 00:00:00 | 

查詢4

WITH CTE(DATE_OF_CURRENT_MONTH, Lvl) AS 
(
    SELECT TRUNC(SYSDATE, 'MM'), 1 
    FROM DUAL 
    UNION ALL 
    SELECT TRUNC(SYSDATE, 'MM') + Lvl, Lvl + 1 
    FROM CTE 
    WHERE Lvl < EXTRACT(DAY FROM LAST_DAY(SYSDATE)) 
) 
SELECT DATE_OF_CURRENT_MONTH FROM CTE 

Results

| DATE_OF_CURRENT_MONTH | 
|-----------------------| 
| May, 01 2015 00:00:00 | 
| May, 02 2015 00:00:00 | 
| May, 03 2015 00:00:00 | 
| May, 04 2015 00:00:00 | 
|   .   | 
|   .   | 
|   .   | 
| May, 29 2015 00:00:00 | 
| May, 30 2015 00:00:00 | 
| May, 31 2015 00:00:00 | 
相關問題