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

Liczba piątków między dwiema datami

To zrobi to:

select ((next_day(date2-7,'FRI')-next_day(date-1,'FRI'))/7)+1 as num_fridays
from data

Może najlepiej, jeśli to rozwiążę. Funkcja NEXT_DAY zwraca następny dzień, czyli (w tym przypadku piątek) po data.

Zatem znalezienie pierwszego piątku po d1 to:

next_day( d1, 'FRI')

Ale jeśli d1 to piątek, który zwróci następny piątek, więc dostosowujemy:

next_day( d1-1, 'FRI')

Podobnie, aby znaleźć ostatni piątek do d2 włącznie, robimy:

next_day( d1-7, 'FRI')

Odjęcie 2 daje liczbę dni:0, jeśli są to ta sama data, 7, jeśli dzielą je tydzień i tak dalej:

next_day( d1-7, 'FRI') - next_day( d1-1, 'FRI') 

Konwertuj na tygodnie:

(next_day( d1-7, 'FRI') - next_day( d1-1, 'FRI')) / 7

Wreszcie, jeśli są w tej samej dacie, otrzymujemy 0, ale tak naprawdę jest 1 piątek i tak dalej, więc dodajemy jeden:

((next_day( d1-7, 'FRI') - next_day( d1-1, 'FRI')) / 7) + 1


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SYS_EXTRACT_UTC() Funkcja w Oracle

  2. customer.pk_name dołączanie do transakcji.fk_name vs. customer.pk_id [serial] dołączanie do transakcji.fk_id [liczba całkowita]

  3. Używanie podzapytania w instrukcji Check w Oracle

  4. Błąd SQL ORA-01722:nieprawidłowy numer

  5. Oracle:Wyszukiwanie pełnotekstowe z warunkiem