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

Следващия работен ден (понеделник - петък) в Oracle?

Тези неща обикновено се правят с таблица, която изброява всички работни дни в годината, а не с наивна формула като:

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)

Използването на таблица ви позволява да вземете предвид неща като официални празници, национални празници, религиозни фестивали, дни на гласуване, дни на траур, ad hoc почивни дни, които могат да възникнат поради фирмени или политически причини и т.н. и т.н. След това поддържането на таблицата се превръща във важна задача. Извличането на следващия работен ден е по същество случай на запитване към таблицата за 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. Водещи въпроси относно JAVA/JRE в приложенията на Oracle

  2. DB Design за съхраняване на персонализирани полета за таблица

  3. Как да настроите региона на часовата зона за JDBC Connection и да избегнете SqlException регионът на часовата зона не е намерен?

  4. Актуализиране на таблицата на Oracle от макрос на Excel VBA с помощта на ODBC връзка

  5. алтернатива на listagg в Oracle?