我有2個日期,2011年3月28日和2011年6月29日。我需要一個SQL查詢來顯示這兩個日期之間的月份,包括包含日期的月份,即。六月,五月,四月和三月。如何使用查詢獲取2個給定日期之間的月份列表?
7
A
回答
17
像這樣的事情
SQL> ed
Wrote file afiedt.buf
select to_char(add_months(start_date, level-1), 'fmMonth')
from (select date '2011-03-30' start_date,
date '2011-06-29' end_date
from dual)
connect by level <= months_between(
trunc(end_date,'MM'),
trunc(start_date,'MM'))
* + 1
SQL>/
TO_CHAR(ADD_MONTHS(START_DATE,LEVEL-
------------------------------------
March
April
May
June
應該工作。
1
您可以使用該功能MONTHS_BETWEEN
SELECT MOD(TRUNC(MONTHS_BETWEEN('2011-07-29', '2011-03-28')), 12) as MONTHS
FROM DUAL
輸出
MONTHS
----------
4
1
幾天前我需要回答這個問題。我發現了另一個我更喜歡的解決方案:
select to_char(which_month, 'Mon-yyyy') month
from
(
select
add_months(to_date(:start_date,'mm-yyyy'), rownum-1) which_month
from
all_objects
where
rownum <= months_between(to_date(:end_date,'mm-yyyy'), add_months(to_date(:start_date,'mm-yyyy'), -1))
order by
which_month
)
你當然可以使用任何你想要的格式。我'團結起來並且總結了另一套,這樣即使他們沒有結果,我也能得到這些月份。
+0
讚賞,確切回答我想要的東西:) – John
1
要去添加此解決方案,只是因爲我認爲這是比別人更清潔:
SELECT ADD_MONTHS(TRUNC(TO_DATE('28-Mar-2011', 'DD-MON-YYYY'), 'MON'), ROWNUM - 1) date_out
FROM DUAL
CONNECT BY ADD_MONTHS(TRUNC(TO_DATE('28-Mar-2011', 'DD-MON-YYYY'), 'MON'), ROWNUM - 1)
<= TRUNC(TO_DATE('29-Jun-2011', 'DD-MON-YYYY'), 'MON')
0
SELECT MIN (to_date((TO_CHAR (Actual_Date, 'DD-MM-RRRR')),'dd-mm-rrrr')) F_DATE,
MAX (to_date((TO_CHAR (Actual_Date, 'DD-MM-RRRR')),'dd-mm-rrrr')) T_DATE,
TO_CHAR (Actual_Date, 'MM-RRRR') TRX_MONTH
FROM ( SELECT TRUNC (TO_DATE (:P_FDATE, 'dd-mm-rrrr')) + LEVEL - 1
Actual_Date
FROM (SELECT TRUNC (TO_DATE (:P_FDATE, 'dd-mm-rrrr'), 'MM') - 1
AS dt
FROM DUAL)
CONNECT BY LEVEL <=
( TO_DATE (:P_TDATE, 'dd-mm-rrrr')
- TRUNC (TO_DATE (:P_FDATE, 'dd-mm-rrrr'))
+ 1))
GROUP BY TO_CHAR (Actual_Date, 'MM-RRRR')
ORDER BY 1
+0
請將您的代碼縮進4個空格以激活語法高亮顯示。另外,增加一些解釋性文字通常是值得讚賞的(特別是如果已經有了可接受的答案,請說出你的解決方案有什麼不同)。 – chtz
相關問題
- 1. 如何獲得2個給定月份之間的月份
- 2. 查詢獲取日期,月份和年份之間的數據
- 3. 如何獲取兩個日期之間的月份和年份列表
- 4. Linq查詢與2個日期之間的月份差異
- 5. mysql查詢從兩個日期獲取月份名稱列表
- 6. 如何獲取給定月份中每週的日期間隔?
- 7. Mysql在日期和月份列之間獲取日期劃分
- 8. 如何獲取兩個日期之間的月份
- 9. 如何從日期查詢中獲取日期和月份?
- 10. 通過SQL查詢獲取兩個日期之間月份的日期範圍列表
- 11. 如何僅獲取星期一在兩個給定日期之間的月份的最後一天的日期
- 12. 如何使用moment.js列出2個日期之間的所有月份?
- 13. 使用LINQ EF查詢來獲取給定月份中的所有日期
- 14. 從給定日期獲取月份,日期和年份
- 15. SQL Server查詢顯示特定月份或日期之間的彙總列表
- 16. 在兩個給定日期之間創建日期序列 - 二月份失敗
- 17. mysql查詢獲取2日期之間的第一個特定日期
- 18. 在兩個日期之間查找特定月份和年份
- 19. 獲取列表年份和月份形式的日期之間的差異
- 20. 在日期範圍之間查找特定月份的日期
- 21. 使用javascript獲取兩個日期之間的日期列表
- 22. 如何獲取兩個日期之間的月份和年份的名稱
- 23. 如何獲取兩個日期之間的日期列表?
- 24. 如何從日期時間使用JavaScript獲取日期,年份,月份?
- 25. 如何在django查詢集中獲取日期的月份
- 26. 如何查找月份以獲取給定月份的記錄
- 27. 如何獲得兩個日期之間的月份集合?
- 28. 紅寶石 - 獲取兩個日期之間的月份範圍
- 29. 獲取不同年份的2個日期之間的確定日期
- 30. 獲取2日期之間的日期列表有錯誤
嗨,賈斯汀,偉大的思想都一樣;) – APC
+1。 「相似」,但你的 - 正如你所指出的 - 更好。 :D – APC
嗯,即使是一隻盲松鼠也會偶然發現堅果。 –