SQL data parte 2

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
  

Mensagemem Seg, 12 Nov 2007 11:34 am

Olá pessoal estou precisado de um SQL novamente, rs

Bom para os macgyver de plantão o problema é o seguinte tenho em uma tabela três colunas a primeira tem DTvencimento a segunda tem DTUltimo_recebimento e VLjuros. bom preciso trazer todo mundo em que a dtultimo_recebimento > dtvencimento and vljuros is not null até ai beleza ele traz todos que pagaram com juros só que as datas não estão tratando dos sabados e domingos, eu queria uma finção que diferenciasse os sabados e domingo tipo não troxesse registro nas datas de sabado e domingo só dias úteis

desde já agradeço a todos!
carlos12
Localização: rio

Mensagemem Seg, 12 Nov 2007 12:07 pm

Tenta usar o comando to_char passando o formato 'D':

Código: Selecionar todos
select to_char(sysdate, 'D') from dual;


Este comando vai retornar um número de 1 a 7, indicando o dia da semana (Domingo = 1, Segudna = 2, etc)..
rogenaro
Localização: Londrina - PR

Rafael O. Genaro

Mensagemem Seg, 12 Nov 2007 3:14 pm

Brother, além da Dica do Rafael, você também consegue pegar pela informação completa do dia, do banco, como no exemplo abaixo:

Código: Selecionar todos
SELECT TO_CHAR(SYSDATE,'Day')
  FROM dual;


Ou:

Código: Selecionar todos
SELECT TO_CHAR(SYSDATE,'Dy')
  FROM dual;
Trevisolli
Localização: Araraquara - SP

Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Mensagemem Seg, 12 Nov 2007 5:48 pm

Brother, além da Dica do Rafael, você também consegue pegar pela informação completa do dia, do banco, como no exemplo abaixo:

Código:

SELECT TO_CHAR(SYSDATE,'Day')
FROM dual;



Ou:

Código:

SELECT TO_CHAR(SYSDATE,'Dy')
FROM dual;
Opa, é verdade, trevisolli.
Só que nesses casos, como o retorno da função depende dos parâmetros NLS_LANG e NLS_DATE_LANG (como os formatos 'Day' e 'Dy' retornam os nomes dos dias da semana por extenso, e abreviado respectivamente), se a sessão estiver com algum destes parâmetros em uma língua diferente, a sua comparação pode deixar de funcionar...
por exemplo:
Código: Selecionar todos
alter session set nls_date_language=ENGLISH;
select to_char(sysdate, 'Dy') dia_abreviado
     , to_char(sysdate, 'Day') dia_por_extenso
     , to_char(sysdate, 'D') dia_numerico
from dual;

dia_abreviado   dia_por_extenso   dia_numerico
MON             MONDAY            2

alter session set nls_date_language=BRAZILIAN PORTUGUESE;
select to_char(sysdate, 'Dy') dia_abreviado
     , to_char(sysdate, 'Day') dia_por_extenso
     , to_char(sysdate, 'D') dia_numerico
from dual;

dia_abreviado   dia_por_extenso   dia_numerico
SEG             SEGUNDA-FEIRA     2


Só para tomar um pouco de cuidado, pois às vezes você pode se deparar com uma aplicação que sabe-se lá por que altera algum destes parâmetros, e faz a sua lógica ir por água abaixo (eu que o diga... rs)
rogenaro
Localização: Londrina - PR

Rafael O. Genaro

Mensagemem Seg, 12 Nov 2007 6:38 pm

está certíssimo Rafael, este cuidado realmente deve ser tomado sim.
Valeu pelo post.
Trevisolli
Localização: Araraquara - SP

Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Mensagemem Ter, 13 Nov 2007 11:41 am

Pessoal valeu pela dica poxa ajudou muito, mais uma vez vocês foram fantásticos muito obrigado!!
carlos12
Localização: rio


  • Veja também
    Respostas
    ExibiÇões
    Última mensagem


    Voltar para SQL

    Quem está online

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