sql >> Databáze >  >> RDS >> Oracle

Počet pátků mezi dvěma daty

Udělá to:

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

Možná bude nejlepší, když to rozeberu. Funkce NEXT_DAY vrátí následující den, který je (v tomto případě pátek) po datum.

Takže najít první pátek po d1 by bylo:

next_day( d1, 'FRI')

Ale pokud je d1 pátek, který by se vrátil následující pátek, upravíme:

next_day( d1-1, 'FRI')

Podobně, abychom našli poslední pátek až do d2 včetně, děláme:

next_day( d1-7, 'FRI')

Odečtením 2 získáte počet dní:0, pokud se jedná o stejné datum, 7, pokud je mezi nimi týden atd.:

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

Převést na týdny:

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

Nakonec, pokud jsou stejné datum, dostaneme 0, ale ve skutečnosti je 1 pátek, a tak dále, takže přidáme jeden:

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


  1. V Oracle AS alias nefunguje

  2. Jak vynutit pascal case s podporou Oracle Entity Framework?

  3. Změny v zapisovatelném oddílu mohou neočekávaně selhat

  4. Jak získat první a poslední den předchozího měsíce (s časovým razítkem) na SQL Server