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

Как да получите работни дни или часове между две дати

не можеш. Това е толкова просто. Националните празници варират в целия свят, варират от година на година и допълнителни могат да се добавят или премахват по всяко време. Освен това някои юрисдикции пренасят национални празници, които падат през уикенда, и ги имат следващата седмица; други не го правят.

Ще трябва да създадете таблица с календари и да маркирате национални празници/почивни дни и т.н. в това.

Например

create table calender
  ( day date
  , weekend varchar2(1)
  , holiday varchar2(1)
    );

След това вмъкнете някои данни в него...

 insert into calender (day, weekend)
 select trunc(sysdate + level)
      , case when to_date(sysdate + level,'fmDAY') in ('SATURDAY','SUNDAY') 
                  then 'Y' else 'N' end
   from dual
connect by level <= 365

И накрая, актуализирайте ръчно това, което смятате за национален празник там.

След това можете да изберете работни дни, в зависимост от това как сте го попълнили с нещо подобно:

select count(*)
  from calender
 where day between :startdate and :enddate
   and weekend = 'N'
   and holiday = 'N'


  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 FOR LOOP REVERSE

  2. Инсталиране на Oracle Fusion Middleware / WebLogic Server 11g

  3. Разгръщане и конфигуриране на ODP.NET за работа без инсталация с Entity Framework

  4. Как да форматирате числа в Oracle

  5. PL/SQL шлюз в R11i