[EMAIL PROTECTED]> variable start_date varchar2(20)
[EMAIL PROTECTED]> variable end_date   varchar2(20)
[EMAIL PROTECTED]> exec :start_date := '10/10/2005'

PL/SQL procedure successfully completed.


START_DATE
--------------------------------
10/10/2005

[EMAIL PROTECTED]> exec :end_date := '20/10/2005'

PL/SQL procedure successfully completed.


END_DATE
--------------------------------
20/10/2005

[EMAIL PROTECTED]>
[EMAIL PROTECTED]>
[EMAIL PROTECTED]> set autotrace on
[EMAIL PROTECTED]> with dates
   2    as
   3    (select to_date(:start_date,'dd/mm/yyyy')+level-1 dt
   4       from dual
   5    connect by level <= 
to_date(:end_date,'dd/mm/yyyy')-to_date(:start_date,'dd/mm/yyyy')+1 )
   6
   7    select dt, to_char(dt,'Day') Week
   8      from dates
   9     where to_char(dt, 'd') not in (7,1)
  10  /

DT                  WEEK
------------------- ---------
10/10/2005 00:00:00 Monday
11/10/2005 00:00:00 Tuesday
12/10/2005 00:00:00 Wednesday
13/10/2005 00:00:00 Thursday
14/10/2005 00:00:00 Friday
17/10/2005 00:00:00 Monday
18/10/2005 00:00:00 Tuesday
19/10/2005 00:00:00 Wednesday
20/10/2005 00:00:00 Thursday

9 rows selected.


Execution Plan
----------------------------------------------------------
Plan hash value: 1243202743

---------------------------------------------------------------------------------------
| Id  | Operation                      | Name | Rows  | Bytes | Cost 
(%CPU)| Time     |
---------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT               |      |     1 |     6 |     2 
(0)| 00:00:01 |
|   1 |  VIEW                          |      |     1 |     6 |     2 
(0)| 00:00:01 |
|*  2 |   FILTER                       |      |       |       | 
    |          |
|   3 |    CONNECT BY WITHOUT FILTERING|      |       |       | 
    |          |
|   4 |     FAST DUAL                  |      |     1 |       |     2 
(0)| 00:00:01 |
---------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

    2 - 
filter(TO_NUMBER(TO_CHAR(TO_DATE(:START_DATE,'dd/mm/yyyy')+LEVEL-1,'d'))
               <>7 AND 
TO_NUMBER(TO_CHAR(TO_DATE(:START_DATE,'dd/mm/yyyy')+LEVEL-1,'d'))<>1)


Statistics
----------------------------------------------------------
           0  recursive calls
           0  db block gets
           0  consistent gets
           0  physical reads
           0  redo size
         689  bytes sent via SQL*Net to client
         385  bytes received via SQL*Net from client
           2  SQL*Net roundtrips to/from client
           1  sorts (memory)
           0  sorts (disk)
           9  rows processed

--
Marcio Portes.
http://mportes.blogspot.com

Fabiano Arndt wrote:
> Olá pessoal,
> 
> estou com um certo problema aqui,
> 
> preciso fazer uma sql que me retorne um
> registro para cada dia util (tirando apenas
> sabado e domingo, feriados pode retornar)
> de um certo periodo, mas eu não tenho uma
> tabela com os dias cadastrados...
> 
> o periodo pode ser variavel, por exemplo, o usuario
> pode informar de 10/10/2005 a 20/10/2005 ou de
> 01/01/2005 a 31/12/2005 ou quaquer outra coisa
> quer der na idéia dele.
> 
> eu tava quase criando a tabela e iria cadastrar
> os dias uteis de uns cinco anos mais ou menos,
> mas pensei em dar uma verificada melhor se
> não teria uma maneira mais adequada pra
> resolver isso...
> 
> se alguém tiver uma sugestão agradeço.
> 
> t+, aquele abraço,
> Fabiano.
> 
> 
> ORACLE_BR APOIA 2ºENPO-BR 
> _____________________________________________________________________
> O 2º Encontro Nacional de Profissionais Oracle será realizado no dia 
> 05/11/2005 no auditório da FIAP em São Paulo. Serão apresentadas Palestras e 
> Cases dirigidos exclusivamente por profissionais especialistas e renomados no 
> mercado. Confira a programação no site do evento! http://www.enpo-br.org/
> _____________________________________________________________________
>  
> Links do Yahoo! Grupos
> 
> 
> 
> 
>  
> 
> 
> 
> 
> 

-- 
Marcio Portes
http://mportes.blogspot.com


ORACLE_BR APOIA 2ºENPO-BR 
_____________________________________________________________________
O 2º Encontro Nacional de Profissionais Oracle será realizado no dia 05/11/2005 
no auditório da FIAP em São Paulo. Serão apresentadas Palestras e Cases 
dirigidos exclusivamente por profissionais especialistas e renomados no 
mercado. Confira a programação no site do evento! http://www.enpo-br.org/
_____________________________________________________________________
 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/oracle_br/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 


Responder a