ORACLE – PL/SQL – Pegar dias úteis de um mês

Eaew pessoal!

Hoje coloco aqui um pequeno script SQL onde é possível retornar os dias úteis de um determinado mês/ano!
Ou seja, sem os finais de semana.

Segue o código:

SELECT *
  FROM (
          /* RETORNA TODOS OS DIAS DE UM MÊS COM O NÚMERO INFORMANDO O TIPO DE DIA */          SELECT DATAS_MES + LEVEL - 1 DATA_, TO_CHAR(DATAS_MES + LEVEL - 1, 'd') DIA_SEMANA
          FROM (
                   /* RETORNA PRIMEIRA DATA DO MÊS */                   SELECT TRUNC(
                                   TO_DATE('02' || '/' || '2014', 'MM/YYYY'), 'MM' /* TROCAR O 02 PELO MÊS DESEJADO E 2014 PELO ANO DESEJADO */                               ) DATAS_MES FROM DUAL
               )
        CONNECT BY DATAS_MES + LEVEL - 1 <= LAST_DAY(DATAS_MES)
        )
 WHERE DIA_SEMANA NOT IN (1, 7) /* REMOVE  DOMINGO(1) E SÁBADO(7) */

Resultado:

--------------------------------------------
DATA_DIA_SEMANA
103/02/20142
204/02/20143
305/02/20144
406/02/20145
507/02/20146
610/02/20142
711/02/20143
812/02/20144
913/02/20145
1014/02/20146
1117/02/20142
1218/02/20143
1319/02/20144
1420/02/20145
1521/02/20146
1624/02/20142
1725/02/20143
1826/02/20144
1927/02/20145
2028/02/20146
--------------------------------------------

 

Lembrando que os números da coluna DIA_SEMANA representam:
1 – Domingo
2 – Segunda
3 – Terça
4 – Quarta
5 – Quinta
6 – Sexta
7 – Sábado

É isso ai pessoal, não sei se é a melhor solução mas atende ao objetivo!
Abraços!

Referência:

4.00 avg. rating (86% score) - 1 vote

Autor: Reynaldo

Desenvolvedor a mais de três anos de diversas plataformas como .Net/Java e Android. Muito autodidata e empenhado, gosta de descobrir coisas novas e conhecer as novas ferramentas do mercado. Vive pensando sobre a vida e tendo ideias de como melhorar o dia a dia das pessoas. Um grande e meloso apaixonado por sua namorada que ama do fundo do coração =) (Pikena Te Amo !!! =D)

Loading Disqus Comments ...
Loading Facebook Comments ...

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

* Copy This Password *

* Type Or Paste Password Here *