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
carlos12
Rank: Analista Pleno
Rank: Analista Pleno
Mensagens: 123
Registrado em: Qua, 24 Out 2007 4:31 pm
Localização: rio

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!
rogenaro
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 232
Registrado em: Sex, 30 Mar 2007 7:26 pm
Localização: Londrina - PR
Rafael O. Genaro

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

Selecionar tudo

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, Segunda = 2, etc)..
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

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

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

Selecionar tudo

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

Ou:

Selecionar tudo

SELECT TO_CHAR(SYSDATE,'Dy') 
  FROM dual;
rogenaro
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 232
Registrado em: Sex, 30 Mar 2007 7:26 pm
Localização: Londrina - PR
Rafael O. Genaro

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:

Selecionar tudo

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)
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

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

está certíssimo Rafael, este cuidado realmente deve ser tomado sim.
Valeu pelo post.
carlos12
Rank: Analista Pleno
Rank: Analista Pleno
Mensagens: 123
Registrado em: Qua, 24 Out 2007 4:31 pm
Localização: rio

Pessoal valeu pela dica poxa ajudou muito, mais uma vez vocês foram fantásticos muito obrigado!!
Responder
  • Informação
  • Quem está online

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