Olá amigos,
estou fazendo um relatório de aniversariantes, no entanto preciso que mostre os aniversariantes entre duas datas. Se as duas datas forem dentro do mesmo ano fica tudo certo, o problema é quando tenho datas em anos diferentes.
Ex.:
01/12/2012 e 29/01/2013.
Como teria que ficar meu select para que quando houvessem casos assim, me mostrasse os aniversariantes entre essas duas datas.
SELECT para aniversariantes entre duas datas
-
- Rank: Estagiário Sênior
- Mensagens: 9
- Registrado em: Qua, 06 Jun 2012 4:48 pm
-
- Moderador
- Mensagens: 641
- Registrado em: Seg, 03 Set 2007 3:26 pm
- Localização: Fortaleza - CE
att,
Daniel N.N.
Daniel N.N.
Quando funciona, num mesmo ano, sua comparação de datas, você desconsidera o ano ???
Deve ser isso, se desconsiderar o ano quando faz o filtro entre 2 anos, acaba sendo uma consulta "de volta para o futuro" .
Deve ser isso, se desconsiderar o ano quando faz o filtro entre 2 anos, acaba sendo uma consulta "de volta para o futuro" .
-
- Rank: Estagiário Sênior
- Mensagens: 9
- Registrado em: Qua, 06 Jun 2012 4:48 pm
Sim, eu desconsidero o ano.
Já tentei considerando o ano, no entanto, não funcionou
SELECT *
FROM funcionarios f
WHERE to_char(f.data_nascimento, 'MM/DD') BETWEEN to_char(:p_data_ini, 'MM/DD')
AND to_char(:p_data_fin, 'MM/DD');
-
- Moderador
- Mensagens: 641
- Registrado em: Seg, 03 Set 2007 3:26 pm
- Localização: Fortaleza - CE
att,
Daniel N.N.
Daniel N.N.
Considerando o ano(os parametros informados são DATA com dia/mês/ano), tenta assim:
AND TO_DATE(to_char(f.data_nascimento, 'DD/MM/') || to_char(:p_data_ini, 'RRRR'),'DD/MM/RRRR') >= :p_data_ini
AND TO_DATE(to_char(f.data_nascimento, 'DD/MM/') || to_char(:p_data_fin, 'RRRR'),'DD/MM/RRRR') <= :p_data_fin
-
- Rank: Estagiário Sênior
- Mensagens: 9
- Registrado em: Qua, 06 Jun 2012 4:48 pm
Ah, agora funcionou
Muito obrigado pela ajuda!
Muito obrigado pela ajuda!
-
- Rank: Analista Júnior
- Mensagens: 72
- Registrado em: Sex, 18 Nov 2011 4:51 pm
TO_CHAR não faz comparação, era só usar TO_DATE
-
- Moderador
- Mensagens: 641
- Registrado em: Seg, 03 Set 2007 3:26 pm
- Localização: Fortaleza - CE
att,
Daniel N.N.
Daniel N.N.
A comparação com to_char() não funciona nesse caso, mas também um simples to_date() não resolveria, pois os aniversários das pessoas compreendem vários anos, mesmo que sejam no mesmo dia/mês o aniversário.Rafael_Santos escreveu:TO_CHAR não faz comparação, era só usar TO_DATE
Como saber se alguém de '01/01/1980' e outra de '01/01/1985' fazem aniversário em janeiro?de que ano seria a comparação?
Enfim.
-
- Rank: Analista Júnior
- Mensagens: 72
- Registrado em: Sex, 18 Nov 2011 4:51 pm
Tem razão, não tinha me atentado a exclusão do ano.
Obrigado pela explicação Noctifero
Obrigado pela explicação Noctifero
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Google [Bot] e 6 visitantes