Re: [oracle_br] Dias úteis.

2006-07-06 Por tôpico Augusto Cesar R. Costa
Marcio, obrigado pela ajuda, não havia realmente pensado nisso.
Atenciosamente.
Augusto Cesar R. Costa
  - Original Message - 
  From: Marcio Portes 
  To: oracle_br@yahoogrupos.com.br 
  Sent: Thursday, July 06, 2006 1:00 AM
  Subject: Re: [oracle_br] Dias úteis.


  connect by level não dá pra usar com a versão 8i, só 9i em diante. Na
  8i eu usava muito a all_objects porque me dá linha suficiente para a
  base, mas voce pode criar sua própria view de base com linhas
  suficientes e usar a vontade.

  Fica mais ou menos assim em 8i

  [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]> select dt, to_char(dt,'Day') Week
2from (
3  select to_date(:start_date,'dd/mm/')+rownum-1 dt
4from all_objects
5   where rownum <=
6 
to_date(:end_date,'dd/mm/')-to_date(:start_date,'dd/mm/')+1
7)
8   where to_char(dt, 'd') not in (7,1)
9  /

  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.


  On 7/5/06, Augusto Cesar R. Costa <[EMAIL PROTECTED]> wrote:
  >
  >
  >Pessoal, bom dia.
  >  Estou precisando de uma forma de retornar quais os dias da semana, 
excluindo os finais de semana, num determinado intervalo informado.
  >  Procurando nas mensagens antigas do grupo achei uma mensagem do nosso 
amigo Marcio Portes que funciona no Oracle9i, mas precisaria de alguma solução 
que pudesse ser utilizada na versão 8.1.6.
  >  http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/msg03672.html
  >
  >  Tentei adaptar para Oracle8i, executei no Oracle9i para ver se o retorno 
era o desejado e deu certo::
  >
  >  SQL> select * from v$version;
  >
  >  BANNER
  >  
  >  Oracle9i Edition Release 9.2.0.7.0 - Production
  >  PL/SQL Release 9.2.0.7.0 - Production
  >  CORE 9.2.0.7.0 Production
  >
  >  TNS for 32-bit Windows: Version 9.2.0.7.0 - Production
  >  NLSRTL Version 9.2.0.7.0 - Production
  >
  >  SQL>
  >  SQL> select data.dt, to_char(dt,'day')
  >2from (select to_date(sysdate + 1,'dd/mm/')+level-1 dt
  >3from dual
  >4connect by level <= to_date(sysdate + 
10,'dd/mm/')-to_date(sysdate,'dd/mm/')+1) data
  >5   where to_char(data.dt,'d') not in (1,7);
  >
  >  DT  TO_CHAR(DT,'DAY')
  >  --- -
  >  06/07/2006  thursday
  >  07/07/2006  friday
  >  10/07/2006  monday
  >  11/07/2006  tuesday
  >  12/07/2006  wednesday
  >  13/07/2006  thursday
  >  14/07/2006  friday
  >
  >  7 rows selected
  >
  >  SQL>
  >
  >
  >  Contudo, quando executo no Oracle 8i que tenho aqui também, obtenho o erro:
  >
  >
  >  SQL> select * from v$version;
  >
  >  BANNER
  >  
  >  Oracle8i Edition Release 8.1.6.3.0 - Production
  >  PL/SQL Release 8.1.6.3.0 - Production
  >  CORE 8.1.6.0.0 Production
  >
  >  TNS for 32-bit Windows: Version 8.1.6.3.0 - Production
  >  NLSRTL Version 3.4.1.0.0 - Production
  >
  >  SQL>
  >  SQL> select data.dt, to_char(dt,'day')
  >2from (select to_date(sysdate + 1,'dd/mm/')+level-1 dt
  >3from dual
  >4connect by level <= to_date(sysdate + 
10,'dd/mm/')-to_date(sysdate,'dd/mm/')+1) data
  >5   where to_char(data.dt,'d') not in (1,7);
  >
  >  select data.dt, to_char(dt,'day')
  >from (select to_date(sysdate + 1,'dd/mm/')+level-1 dt
  >from dual
  >connect by level <= to_date(sysdate + 
10,'dd/mm/')-to_date(sysdate,'dd/mm/')+1) data
  >   where to_char(data.dt,'d') not in (1,7)
  >
  >  ORA

Re: [oracle_br] Dias úteis.

2006-07-05 Por tôpico Marcio Portes
connect by level não dá pra usar com a versão 8i, só 9i em diante. Na
8i eu usava muito a all_objects porque me dá linha suficiente para a
base, mas voce pode criar sua própria view de base com linhas
suficientes e usar a vontade.

Fica mais ou menos assim em 8i

[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]> select dt, to_char(dt,'Day') Week
  2from (
  3  select to_date(:start_date,'dd/mm/')+rownum-1 dt
  4from all_objects
  5   where rownum <=
  6 to_date(:end_date,'dd/mm/')-to_date(:start_date,'dd/mm/')+1
  7)
  8   where to_char(dt, 'd') not in (7,1)
  9  /

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.


On 7/5/06, Augusto Cesar R. Costa <[EMAIL PROTECTED]> wrote:
>
>
>Pessoal, bom dia.
>  Estou precisando de uma forma de retornar quais os dias da semana, excluindo 
> os finais de semana, num determinado intervalo informado.
>  Procurando nas mensagens antigas do grupo achei uma mensagem do nosso amigo 
> Marcio Portes que funciona no Oracle9i, mas precisaria de alguma solução que 
> pudesse ser utilizada na versão 8.1.6.
>  http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/msg03672.html
>
>  Tentei adaptar para Oracle8i, executei no Oracle9i para ver se o retorno era 
> o desejado e deu certo::
>
>  SQL> select * from v$version;
>
>  BANNER
>  
>  Oracle9i Edition Release 9.2.0.7.0 - Production
>  PL/SQL Release 9.2.0.7.0 - Production
>  CORE 9.2.0.7.0 Production
>
>  TNS for 32-bit Windows: Version 9.2.0.7.0 - Production
>  NLSRTL Version 9.2.0.7.0 - Production
>
>  SQL>
>  SQL> select data.dt, to_char(dt,'day')
>2from (select to_date(sysdate + 1,'dd/mm/')+level-1 dt
>3from dual
>4connect by level <= to_date(sysdate + 
> 10,'dd/mm/')-to_date(sysdate,'dd/mm/')+1) data
>5   where to_char(data.dt,'d') not in (1,7);
>
>  DT  TO_CHAR(DT,'DAY')
>  --- -
>  06/07/2006  thursday
>  07/07/2006  friday
>  10/07/2006  monday
>  11/07/2006  tuesday
>  12/07/2006  wednesday
>  13/07/2006  thursday
>  14/07/2006  friday
>
>  7 rows selected
>
>  SQL>
>
>
>  Contudo, quando executo no Oracle 8i que tenho aqui também, obtenho o erro:
>
>
>  SQL> select * from v$version;
>
>  BANNER
>  
>  Oracle8i Edition Release 8.1.6.3.0 - Production
>  PL/SQL Release 8.1.6.3.0 - Production
>  CORE 8.1.6.0.0 Production
>
>  TNS for 32-bit Windows: Version 8.1.6.3.0 - Production
>  NLSRTL Version 3.4.1.0.0 - Production
>
>  SQL>
>  SQL> select data.dt, to_char(dt,'day')
>2from (select to_date(sysdate + 1,'dd/mm/')+level-1 dt
>3from dual
>4connect by level <= to_date(sysdate + 
> 10,'dd/mm/')-to_date(sysdate,'dd/mm/')+1) data
>5   where to_char(data.dt,'d') not in (1,7);
>
>  select data.dt, to_char(dt,'day')
>from (select to_date(sysdate + 1,'dd/mm/')+level-1 dt
>from dual
>connect by level <= to_date(sysdate + 
> 10,'dd/mm/')-to_date(sysdate,'dd/mm/')+1) data
>   where to_char(data.dt,'d') not in (1,7)
>
>  ORA-01436: CONNECT BY loop in user data
>
>  SQL>
>
>
>  Alguém tem alguma sugestão?
>  Atenciosamente.
>  Augusto Cesar Rodovalho Costa
>
>
>  [As partes desta mensagem que não continham texto foram removidas]
>
>   



-- 
Marcio Portes
Material Tecnico em Portugues - http://mportes.blogspot.com
Practical Learning Oracle
-   http://mportes.blogspot.com/2006/02/practical-learning-oracle.html


--
Atenção! As mensagens deste grupo são de acesso público e de inteira 
responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--__

Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine 
__
O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo,

[oracle_br] Dias úteis.

2006-07-05 Por tôpico Augusto Cesar R. Costa
Pessoal, bom dia.
Estou precisando de uma forma de retornar quais os dias da semana, excluindo os 
finais de semana, num determinado intervalo informado.
Procurando nas mensagens antigas do grupo achei uma mensagem do nosso amigo 
Marcio Portes que funciona no Oracle9i, mas precisaria de alguma solução que 
pudesse ser utilizada na versão 8.1.6.
http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/msg03672.html

Tentei adaptar para Oracle8i, executei no Oracle9i para ver se o retorno era o 
desejado e deu certo::

SQL> select * from v$version;

BANNER

Oracle9i Edition Release 9.2.0.7.0 - Production
PL/SQL Release 9.2.0.7.0 - Production
CORE 9.2.0.7.0 Production

TNS for 32-bit Windows: Version 9.2.0.7.0 - Production
NLSRTL Version 9.2.0.7.0 - Production

SQL> 
SQL> select data.dt, to_char(dt,'day')
  2from (select to_date(sysdate + 1,'dd/mm/')+level-1 dt
  3from dual
  4connect by level <= to_date(sysdate + 
10,'dd/mm/')-to_date(sysdate,'dd/mm/')+1) data
  5   where to_char(data.dt,'d') not in (1,7);

DT  TO_CHAR(DT,'DAY')
--- -
06/07/2006  thursday
07/07/2006  friday
10/07/2006  monday
11/07/2006  tuesday
12/07/2006  wednesday
13/07/2006  thursday
14/07/2006  friday

7 rows selected

SQL> 


Contudo, quando executo no Oracle 8i que tenho aqui também, obtenho o erro:


SQL> select * from v$version;

BANNER

Oracle8i Edition Release 8.1.6.3.0 - Production
PL/SQL Release 8.1.6.3.0 - Production
CORE 8.1.6.0.0 Production

TNS for 32-bit Windows: Version 8.1.6.3.0 - Production
NLSRTL Version 3.4.1.0.0 - Production

SQL> 
SQL> select data.dt, to_char(dt,'day')
  2from (select to_date(sysdate + 1,'dd/mm/')+level-1 dt
  3from dual
  4connect by level <= to_date(sysdate + 
10,'dd/mm/')-to_date(sysdate,'dd/mm/')+1) data
  5   where to_char(data.dt,'d') not in (1,7);

select data.dt, to_char(dt,'day')
  from (select to_date(sysdate + 1,'dd/mm/')+level-1 dt
  from dual
  connect by level <= to_date(sysdate + 
10,'dd/mm/')-to_date(sysdate,'dd/mm/')+1) data
 where to_char(data.dt,'d') not in (1,7)

ORA-01436: CONNECT BY loop in user data

SQL> 


Alguém tem alguma sugestão?
Atenciosamente.
Augusto Cesar Rodovalho Costa


[As partes desta mensagem que não continham texto foram removidas]



--
Atenção! As mensagens deste grupo são de acesso público e de inteira 
responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--__

Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine 
__
O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o 
link do mesmo para evitar trafego(pedidos) desnecessário. 
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