[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