Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak określić tydzień kwartału w zapytaniu Oracle

Otrzymasz tydzień (niedziela - sobota) kwartału:

SELECT TO_CHAR( SYSDATE, 'YYYY-"Q"Q-"W"' )
     || ( 7 + TRUNC( SYSDATE + 1, 'IW' ) - TRUNC( TRUNC( SYSDATE, 'Q' ) + 1, 'IW' ) ) / 7;
         AS "Current Time"
FROM DUAL

Wyjaśnienie :

  • Możesz znaleźć niedzielę, która przypadała w tym dniu lub tuż przed określoną datą, używając NEXT_DAY(TRUNC(data_value), 'SUNDAY') - 7 (który jest zależny od NLS_TERRITORY ustawienie) lub TRUNC( wartość_daty + 1, 'IW' ) - 1 (która jest krótsza i nie zależy od żadnych ustawień).
  • TRUNC(data_wartość, 'Q') podaje datę pierwszego dnia kwartału zawierającą wartość data (tj. 1 stycznia, 1 kwietnia, 1 lipca lub 1 października).
  • Łącząc te dwa elementy, niedziela w dniu lub tuż przed pierwszym dniem kwartału jest określana jako TRUNC(TRUNC(data_value, 'Q' ) + 1, 'IW' ) - 1
  • Dlatego liczba dni między niedzielą lub tuż przed początkiem kwartału a niedzielą w dniu lub tuż przed daną datą wynosi:( TRUNC( wartość_daty + 1, ' IW' ) - 1 ) - ( AKTUALNE( AKTUALNE( wartość_data; 'Q' ) + 1, 'IW' ) - 1 ) - co można uprościć, anulując -1 warunki.
  • Różnica liczby tygodni to tylko ta liczba podzielona przez 7 (ale daje wartość indeksowaną 0 i chcesz, aby numer tygodnia kwartału był indeksowany 1; dodajesz 1 tydzień do wyniku lub przed robiąc podział, dodaj 7 dni).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Literał nie pasuje do ciągu formatu dla Oracle SQL to_date w kolumnie ciągu

  2. Jak uzyskać aktualny obiekt Connection w Spring JDBC?

  3. SQLite do Oracle

  4. Jak utworzyć plik buforowy skryptu Oracle sql?

  5. Blokada pesymistyczna JPA nie działa