Fórum Aniversariantes #270435
28/02/2005
0
mas quando o kra informa duas datas iguais o sql mostra varios registros q naum tem nada haver, com o q eh pedido.
Alguem teria alguma outra solução para esse problema, ou corrigir esse comando no meu sql.
Zunker
Curtir tópico
+ 0Posts
28/02/2005
Koplin
((EXTRACT(DAY FROM Usu_nascimento) >= :DIA1) AND
(EXTRACT(MONTH FROM Usu_nascimento) >= :MES1))
and ((EXTRACT(DAY FROM Usu_nascimento) <= :DIA2) AND
(EXTRACT(MONTH FROM Usu_nascimento) <= :MES2))
Gostei + 0
01/03/2005
Zunker
Gostei + 0
01/03/2005
Zunker
Soh q dai se tu informava um valor por exemplo entre 28/02 e 01/03, dai eh como se naum tivesse Aniversariantes nestas datas sendo q tem +/- uns 300 usuarios q fazem aniversario nesse intervalo.....xD
Gostei + 0
01/03/2005
Beppe
WHERE (EXTRACT(MONTH FROM Usu_nascimento) between :MES1 and :MES2) and (((EXTRACT(MONTH FROM Usu_nascimento) = :MES1 and EXTRACT(DAY FROM Usu_nascimento) >= :DIA1) or ((EXTRACT(MONTH FROM Usu_nascimento) = :MES2 and EXTRACT(DAY FROM Usu_nascimento) <= :DIA2)))
Gostei + 0
01/03/2005
Motta
Gostei + 0
01/03/2005
Zunker
WHERE (EXTRACT(MONTH FROM Usu_nascimento) between :MES1 and :MES2) and (((EXTRACT(MONTH FROM Usu_nascimento) = :MES1 and EXTRACT(DAY FROM Usu_nascimento) >= :DIA1) or ((EXTRACT(MONTH FROM Usu_nascimento) = :MES2 and EXTRACT(DAY FROM Usu_nascimento) <= :DIA2)))
Neste caso esta quase certo pois se o kra informa as mesmas datas soh informa todos do mesmo mes, mas naum chega a informa todos soh da data, por exemplo se ele informar 07/03 e 07/03.
E motta eu naum entendi a sua explicação, pois nunca mexi desta maneira, naumteria um exemplo pra me explicar melhor.
Desde jah obrigado pela atenção....xD
Gostei + 0
01/03/2005
Emerson Nascimento
WHERE (Extract(MONTH from Usu_nascimento) between :Mes1 and :Mes2) and ((Extract(MONTH from Usu_nascimento) = :Mes1 and Extract(DAY from Usu_nascimento) >= :Dia1) or (Extract(MONTH from Usu_nascimento) = :Mes2 and Extract(DAY from Usu_nascimento) <= :Dia2) or (Extract(MONTH from Usu_nascimento)<>:Mes1 and Extract(MONTH from Usu_nascimento)<>:Mes2) )
Gostei + 0
01/03/2005
Zunker
WHERE (Extract(MONTH from Usu_nascimento) between :Mes1 and :Mes2) and ((Extract(MONTH from Usu_nascimento) = :Mes1 and Extract(DAY from Usu_nascimento) >= :Dia1) or (Extract(MONTH from Usu_nascimento) = :Mes2 and Extract(DAY from Usu_nascimento) <= :Dia2) or (Extract(MONTH from Usu_nascimento)<>:Mes1 and Extract(MONTH from Usu_nascimento)<>:Mes2) )
Neste caso
(Extract(MONTH from Usu_nascimento)<>:Mes1 and Extract(MONTH from Usu_nascimento)<>:Mes2)
seria descartado, pois tu jah vai tar definindo em
(Extract(MONTH from Usu_nascimento) between :Mes1 and :Mes2)
Entaum seria o mesmo q este esquema q jah foi passado aki no topico
WHERE (EXTRACT(MONTH FROM Usu_nascimento) between :MES1 and :MES2) and (((EXTRACT(MONTH FROM Usu_nascimento) = :MES1 and EXTRACT(DAY FROM Usu_nascimento) >= :DIA1) or ((EXTRACT(MONTH FROM Usu_nascimento) = :MES2 and EXTRACT(DAY FROM Usu_nascimento) <= :DIA2)))
Mas mesmo assim obrigado pela atenção
Gostei + 0
01/03/2005
Motta
temos duas funcoes
to_char - converte uma data para string
to_date - ´ uma string para data
seria algo assim
SELECT *
FROM CADASTRO
WHERE TO_DATE(TO_CHAR(DATA_NASCIMENTO,´DDMM´)||´1900´,´DDMMYYYY´)
BETWEEN TO_DATE(´01021900´,´DDMMYYYY´) AND TO_DATE(´15031900´,´DDMMYYYY´)
O PROBLEMA SERIA ALGO DO TIPO ENTRE ANOS
QUE PODERIA SER RESOLVIDO POR UM UNION
SELECT *
FROM CADASTRO
WHERE TO_DATE(TO_CHAR(DATA_NASCIMENTO,´DDMM´)||´1900´,´DDMMYYYY´)
BETWEEN TO_DATE(´25121900´,´DDMMYYYY´) AND TO_DATE(´31121900´,´DDMMYYYY´)
UNION ALL
SELECT *
FROM CADASTRO
WHERE TO_DATE(TO_CHAR(DATA_NASCIMENTO,´DDMM´)||´1900´,´DDMMYYYY´)
BETWEEN TO_DATE(´01011900´,´DDMMYYYY´) AND TO_DATE(´06011900´,´DDMMYYYY´)
Sou pouco didatico, mas entendeu ?
Gostei + 0
01/03/2005
Zunker
Gostei + 0
01/03/2005
Motta
Gostei + 0
01/03/2005
Emerson Nascimento
SELECT *
FROM CADASTRO
WHERE TO_CHAR(DATA_NASCIMENTO,´MMDD´) // invertido mesmo
BETWEEN TO_CHAR(:DataIni,´MMDD´) AND TO_CHAR(:DataFim,´MMDD´)
?
creio que assim funcione (no Oracle), pois assim seriam exibidos todos os aniversariantes independente do ano.
Gostei + 0
01/03/2005
Emerson Nascimento
instrução SQL para o IB/FB:
select * from usuarios
where extract(month from nascimento) + (cast(extract(day from nascimento) as numeric(5,2)) / 100)
between :Param1 and :Param2
no delphi, via passagem de parâmetros:
Params.ParamByName(´Param1´).AsString := FormatDateTime(´MM.DD´,Data);
Params.ParamByName(´Param2´).AsString := FormatDateTime(´MM.DD´,Data);
obs.: os parâmetros devem ser passados como [b:d7852409e7]AsString[/b:d7852409e7] mesmo.
ou direto:
select * from usuarios
where extract(month from nascimento) + (cast(extract(day from nascimento) as numeric(5,2)) / 100)
between 02.25 and 02.28
onde 02.25 e 02.28 é a data no formato MM.DD (obviamente, é um float)
Gostei + 0
01/03/2005
Motta
Gostei + 0
01/03/2005
Emerson Nascimento
mas agora fiquei com uma dúvida:
[b:36bea54277]Zunker[/b:36bea54277], como a data é informada pelo usuário? Dia/Mês ou uma data completa, Dia/Mês/Ano?
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)