Mam 2 terminy, powiedz 28-mar-2011 i 29-cze-2011. Potrzebuję kwerendy sql, które będą wyświetlać miesiące między tymi 2 datami, w tym miesiące zawierające daty, tj. Czerwiec, maj, kwiecień i marzec.Jak uzyskać listę miesięcy między 2 podanymi datami za pomocą zapytania?
Odpowiedz
coś takiego
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
powinno działać.
Można użyć funkcji MONTHS_BETWEEN
SELECT MOD(TRUNC(MONTHS_BETWEEN('2011-07-29', '2011-03-28')), 12) as MONTHS
FROM DUAL
wyjście
MONTHS
----------
4
Potrzebowałem odpowiedzi na to kilka dni temu. Znalazłem inne rozwiązanie, które mi się podobało:
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
)
Można oczywiście użyć dowolnego formatu. Połączyłem się i podsumowałem kolejny zestaw, aby uzyskać miesiące, nawet jeśli nie przyniosły rezultatów.
Doceniona, dokładna odpowiedź, co chcę :) – John
Zamierzam dodać tego rozwiązania tylko dlatego myślę, że to znacznie czystsze niż inni:
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')
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
Wprowadź wcięcie kodu przez 4 spacje, aby aktywować podświetlanie składni. Dodaje się również trochę tekstu wyjaśniającego (zwłaszcza jeśli są już zaakceptowane odpowiedzi, powiedz, co twoje rozwiązanie robi inaczej). – chtz
- 1. Jak uzyskać listę miesięcy i lat między dwiema datami
- 2. Utwórz tablicę miesięcy między dwiema datami
- 3. Utwórz zakres miesięcy między dwiema datami ruby
- 4. Jak mogę obliczyć liczby miesięcy między dwiema datami w C#
- 5. liczba miesięcy między dwiema datami - z datą boosta
- 6. Jak uzyskać różnicę czasu (w godzinach) między 2 datami
- 7. Ustalanie liczby miesięcy między dwoma datami przy użyciu kakao
- 8. moment js pokaż różnice między 2 datami
- 9. Jak wykonać zapytanie między dwiema datami za pomocą MySQL?
- 10. Jak wyświetlić cały miesiąc między 2 datami z moment.js?
- 11. Jak uzyskać głębię hierarchicznych danych za pomocą zapytania linq?
- 12. SQLAlchemy uzyskać listę identyfikatorów z zapytania
- 13. Jak wyświetlić wszystkie daty między dwiema datami?
- 14. Jak uzyskać kolumny/pola za pomocą zapytania peewee?
- 15. Utwórz tablicę lub listę wszystkich dat między dwiema datami
- 16. Wyboru PostgreSQL między zakresiem miesięcy
- 17. Losowe podwojenie między podanymi liczbami
- 18. różnica w sekundach między dwiema datami za pomocą czasu joda?
- 19. Jak uzyskać różnicę między dwoma datami zaokrąglone do godziny
- 20. Miesiące między dwiema datami funkcja
- 21. jak obliczyć liczbę tygodni z 2 datami?
- 22. Różnica w miesiącach między datami w MySQL
- 23. Jak mogę uzyskać listę wersji jQuery za pomocą konsoli Nuget?
- 24. Jak uzyskać dostęp do Twittera za pomocą zapytania "username"?
- 25. Warunkowy wybór między datami
- 26. Obliczanie liczby lat między 2 datami w PHP
- 27. Jak mogę uzyskać liczbę dni między 2 datami w Oracle 11g?
- 28. Jak uzyskać daty między dwoma datami w C#
- 29. Jak uzyskać liczbę dni między dwoma datami celu-c
- 30. Jak uzyskać różnicę między dwiema datami pod bash?
Witaj Justin, wielkie umysły myślą podobnie;) – APC
+1. "podobni", ale twój jest - jak zauważyłeś - lepszy. : D – APC
Cóż, nawet ślepa wiewiórka znajduje sporadyczny orzech. –