Dias úteis

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
cleberzumba
Rank: DBA Júnior
Rank: DBA Júnior
Mensagens: 223
Registrado em: Qui, 14 Dez 2006 10:45 am
Localização: Brasília-DF
Cleber Zumba de Souza

Pessoal, como eu faço para pegar os dias úteis?
alguém tem um select ou uma função que faça isso?

valeu!
Diego_Mello
Rank: DBA Júnior
Rank: DBA Júnior
Mensagens: 229
Registrado em: Sex, 05 Set 2008 2:59 pm
Localização: Igrejinha - RS
Diego Mello
Igrejinha - RS
www.twitter.com/diegolmello

Opa..
Dias úteis dependem não só das típicas segundas às sextas-feiras, mas também dos feriados, os quais variam de cidade a cidade.
Então não tem uma forma já implementada pra isso.
Segue um select basicão pra buscar o dia da semana.. :P

Selecionar tudo

SQL> SELECT TO_CHAR(SYSDATE, 'd') dia_semana
  2        ,TO_CHAR(SYSDATE, 'DAY') dia_extenso
  3    FROM dual;
 
DIA_SEMANA DIA_EXTENSO
---------- -----------
3          TUESDAY
cleberzumba
Rank: DBA Júnior
Rank: DBA Júnior
Mensagens: 223
Registrado em: Qui, 14 Dez 2006 10:45 am
Localização: Brasília-DF
Cleber Zumba de Souza

valeu!
Avatar do usuário
fsitja
Rank: OraSauro
Rank: OraSauro
Mensagens: 611
Registrado em: Seg, 19 Jan 2009 4:29 pm
Localização: Gaúcho no Rio de Janeiro - RJ
"The scars exist to remind us that the past was real"
Campanha: Como fazer uma pergunta e obter uma resposta.
http://tkyte.blogspot.com/2005/06/how-t ... tions.html

OCA & OCP Developer — OCE SQL Expert — OCS Data Warehousing Specialist

Dê uma olhada no tópico abaixo, que trata de assunto relacionado:
http://glufke.net/oracle/viewtopic.php?t=6400

Não sei exatamente como você precisa dos dados, nem para que serão usados, mas uma forma de gerar os dias úteis de um mês seria assim:

Selecionar tudo

with day_tab as (
select mon_dt + level - 1 dt,
       to_char(mon_dt + level - 1, 'DY', 'NLS_DATE_LANGUAGE=''ENGLISH''') dy
  from (select trunc(to_date(m || '/' || a, 'MM/YYYY'), 'MM') mon_dt
          from (select '02' m, '2010' a from dual))
connect by mon_dt + level - 1 <= last_day(mon_dt))
-- fim dos dados de exemplo
select dt,
       dy
  from day_tab
 where dy in ('MON', 'TUE', 'WED', 'THU', 'FRI');
De novo... não considera os feriados. Teria que incrementar e fazer no where um "not exists" com a tabela de feriado.
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 25 visitantes