sql >> Database teknologi >  >> RDS >> Oracle

Antal fredage mellem to datoer

Dette vil gøre det:

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

Måske bedst, hvis jeg deler det ned. Funktionen NEXT_DAY returnerer den næste dag, som er en (fredag ​​i dette tilfælde) efter datoen.

Så at finde den første fredag ​​efter d1 ville være:

next_day( d1, 'FRI')

Men hvis d1 er en fredag, ville det vende tilbage den følgende fredag, så vi justerer:

next_day( d1-1, 'FRI')

På samme måde for at finde den sidste fredag ​​til og med d2 gør vi:

next_day( d1-7, 'FRI')

At trække de 2 fra giver et antal dage:0 hvis de er samme dato, 7 hvis de er en uges mellemrum og så videre:

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

Konverter til uger:

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

Til sidst, hvis de er den samme dato, får vi 0, men i virkeligheden er der 1 fredag, og så videre, så vi tilføjer en:

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


  1. Hvad er MySQL-ækvivalenten til PostgreSQL's EXPLAIN ANALYZE

  2. CodeIgniter:Kan ikke oprette forbindelse til din databaseserver ved hjælp af de angivne indstillinger Fejlmeddelelse

  3. Forbindelsespooling med Pgbouncer på PostgreSQL 9.0

  4. Gendan database fra nødtilstand i SQL Server