sql >> Databasteknik >  >> RDS >> Oracle

Nästa arbetsdag (måndag - fredag) i Oracle?

Dessa saker görs normalt med en tabell som listar alla arbetsdagar under ett år snarare än en naiv formel som:

CASE WHEN (1 + TRUNC (SYSDATE) - TRUNC (SYSDATE, 'IW')) < 5 
  THEN 1 + (1 + TRUNC (SYSDATE) - TRUNC (SYSDATE, 'IW')) 
  ELSE 1 
END --(on monday to thursday this returns 2 to 5, on fri/sat/sun this returns 1)

CASE WHEN (1 + TRUNC (SYSDATE) - TRUNC (SYSDATE, 'IW')) < 5 
  THEN TRUNC (SYSDATE) + 1 
  ELSE TRUNC (SYSDATE + 4), 'IW')  
END --(on monday to thursday this returns tomorrow's date, on fri/sat/sun it returns next monday's date)

Genom att använda en tabell kan du ta hänsyn till saker som helgdagar, nationella helgdagar, religiösa högtider, röstningsdagar, sorgedagar, ad hoc-dagar som kan uppstå av företag eller politiska skäl etc etc. Att underhålla tabellen blir då en viktig uppgift. Att hämta nästa arbetsdag är i huvudsak en fråga om tabellen för MIN(date) WHERE date > current_date



  1. Något fel med Hibernate DB-anslutningspooler c3p0

  2. Hur man inre join med not in eller inte existerar i mysql-fråga?

  3. Hur man skriver underfråga i From-klausul i django ORM

  4. mysql-problem med information_schema.tables