Oracle
 sql >> база данни >  >> RDS >> Oracle

Брой петъци между две дати

Това ще го направи:

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

Може би най-добре е да го разбия. Функцията NEXT_DAY връща следващия ден, който е (петък в този случай) след датата.

Така че да намерите първия петък след d1 би било:

next_day( d1, 'FRI')

Но ако d1 е петък, това ще се върне следващия петък, така че ние коригираме:

next_day( d1-1, 'FRI')

По същия начин, за да намерим последния петък до d2 включително, правим:

next_day( d1-7, 'FRI')

Изваждането на 2 дава брой дни:0, ако са на една и съща дата, 7, ако са с една седмица разлика и така нататък:

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

Преобразуване в седмици:

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

И накрая, ако са на една и съща дата, получаваме 0, но наистина има 1 петък и така нататък, така че добавяме едно:

((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. Екраниране на контролни знаци в Oracle XDB

  2. Свързване с Oracle 12c база данни от Pentaho Data Integration (Kettle) Community Edition

  3. Архитектура на Oracle E-Business Suite в 12.2

  4. Как да промените отрицателната стойност на положителна в Oracle?

  5. SQL не е функция за група от една група