sql >> Database >  >> RDS >> Oracle

Aantal vrijdagen tussen twee data

Dit zal het doen:

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

Misschien het beste als ik dat doorbreek. De functie NEXT_DAY retourneert de volgende dag die (in dit geval vrijdag) na is de datum.

Dus om de eerste vrijdag na d1 te vinden zou zijn:

next_day( d1, 'FRI')

Maar als d1 een vrijdag is die de volgende vrijdag zou terugkeren, passen we het volgende aan:

next_day( d1-1, 'FRI')

Op dezelfde manier vinden we de laatste vrijdag tot en met d2:

next_day( d1-7, 'FRI')

Door de 2 af te trekken krijg je een aantal dagen:0 als ze op dezelfde datum vallen, 7 als ze een week uit elkaar liggen enzovoort:

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

Converteren naar weken:

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

Ten slotte, als ze dezelfde datum hebben, krijgen we 0, maar in werkelijkheid is er 1 vrijdag, enzovoort, dus voegen we er een toe:

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


  1. Wat is het verschil tussen BIT en TINYINT in MySQL?

  2. Een voorbeeld om de kwetsbaarheid van SQL-injectie en de preventie ervan in Oracle aan te tonen

  3. JSON_ARRAY_INSERT() - Waarden invoegen in een JSON-array in MySQL

  4. Objecten filteren in SQL Server Management Studio (SSMS) - SQL Server / TSQL-zelfstudie, deel 19