Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Następny dzień roboczy (od poniedziałku do piątku) w Oracle?

Te rzeczy są zwykle wykonywane za pomocą tabeli, która zawiera listę wszystkich dni roboczych w roku, zamiast naiwnej formuły, takiej jak:

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)

Korzystanie z tabeli pozwala uwzględnić takie rzeczy, jak święta państwowe, święta państwowe, święta religijne, dni głosowania, dni żałoby, dni wolne od pracy, które mogą wystąpić z powodów firmowych lub politycznych itp. Utrzymanie stołu staje się wtedy ważnym zadaniem. Pobieranie następnego dnia roboczego jest zasadniczo przypadkiem zapytania tabeli o MIN(date) WHERE date > current_date



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wybierz opcję Zbieranie zbiorcze do przykładu Oracle

  2. Aktualizacja SQL, usuwanie i wstawianie w tym samym czasie

  3. (Oracle/SQL) Scal wszystkie typy danych w jedną kolumnę

  4. Pozbądź się zduplikowanych wartości z jednej kolumny w dwóch kolumnach wybierz

  5. Jak programowo wygenerować DDL z bazy danych Oracle?