Fórum Problemas com filtragem de data #471420
27/02/2014
0
Criei uma SP para ajudar nesse quesito, não sei se seria a melhor opção, mas enfim, fiz assim:
FOR select C.cdcliente, C.nmcliente, C.dtnascimento, c.nrfone FROM CLIENTE C
where
(EXTRACT(DAY FROM C.DTNASCIMENTO) >= :DIAI AND EXTRACT(MONTH FROM C.DTNASCIMENTO) >= :MESI) AND
(EXTRACT(DAY FROM C.DTNASCIMENTO) <= :DIAF AND EXTRACT(MONTH FROM C.DTNASCIMENTO) <= :MESF)
ORDER BY EXTRACT(MONTH FROM C.DTNASCIMENTO), EXTRACT(DAY FROM C.DTNASCIMENTO)
INTO
:codigo, :nome, :data_nasc, :nrfone
DO
suspend;
Mas confesso que não está funcionando corretamente, nas variaveis DiaI, DiaF, MesI e MesF coloco o dia e o mes correspodente.
Acredito que tenha uma forma melhor de fazer, e espero que alguem possa me ajudar.
Utilizo Firebird 2.5
Até mais
Cristiano
Curtir tópico
+ 0Posts
27/02/2014
Marisiana Battistella
Vê se esse SQL te ajuda...
select C.cdcliente, C.nmcliente, C.dtnascimento, c.nrfone FROM CLIENTE C
where c.dtnascimento >= (select date_trunc('day', current_date) - INTERVAL '3 day')
and c.dtnascimento <= (select date_trunc('day', current_date) + INTERVAL '3 day')Gostei + 0
27/02/2014
Alex Lekao
ainda bem que vc apareceu... rsrsr
eu estava lendo e relendo e nao conseguia me encontrar no script do amigo. rsrsr
acho que estou lento hoje... mais que o normal... kkkk
Gostei + 0
27/02/2014
Cristiano
Mas olhando pelo código, será que ele vai considerar apenas o dia e o mes para encontrar os aniversariantes do periodo?
Gostei + 0
27/02/2014
Marisiana Battistella
Faz parte...
Hoje também to assim, acho que é cansaço...
Gostei + 0
27/02/2014
Alex Lekao
meu Deus...
e eu devo estar ansioso pq nao vou trabalhar na segunda e nem no sabado... rsrsrsr
Gostei + 0
27/02/2014
Marisiana Battistella
Mas olhando pelo código, será que ele vai considerar apenas o dia e o mes para encontrar os aniversariantes do periodo?
Ah, foi mal... Eu testei no PostgreSQL... Desculpa, confundi...
Assim ele deve pegar 3 dias antes e 3 dias depois da data atual...
Gostei + 0
27/02/2014
Alex Lekao
testar as cegas eh osso... rsrsr
Gostei + 0
27/02/2014
Marisiana Battistella
select addday(current_date, 5) from rdb$database
[url]https://www.devmedia.com.br/imagens/articles/192388/CoelhoFBUDF_2.jpg[/url]
Essa função "addday" pode ser utilizada para adicionar os dias a data atual, porém não estou encontrando uma função ou uma forma de diminuir os dias...
Gostei + 0
27/02/2014
Alex Lekao
select addday(current_date, -5) from rdb$database
mas eh so especulação. rsrsr
Gostei + 0
27/02/2014
Marisiana Battistella
Só usei Firebird nas aulas da minha graduação, depois nunca mais...
Mas tento ajudar pela lógica do SQL e pq tem coisas q são comuns em todos os bancos.
Eu acho q não firebird não tem essa função DATE_TRUNC porque eu não encontrei exemplos...
Gostei + 0
27/02/2014
Alex Lekao
essa funcao nao funcionou nele nao... rsrsr
to pesquisando para ver se consigo alguma coisa...
conseguindo posto aqui... rsrs
Gostei + 0
27/02/2014
Alex Lekao
Gostei + 0
08/05/2014
Emerson Nascimento
FOR select C.cdcliente, C.nmcliente, C.dtnascimento, c.nrfone
FROM CLIENTE C
where
substring(cast(C.DTNASCIMENTO as varchar(10)) from 6 for 5)
between substring(cast(current_date-3 as varchar(10)) from 6 for 5) and
substring(cast(current_date+3 as varchar(10)) from 6 for 5)
ORDER BY EXTRACT(MONTH FROM C.DTNASCIMENTO), EXTRACT(DAY FROM C.DTNASCIMENTO)
INTO
:codigo, :nome, :data_nasc, :nrfone
DO
suspend;
Gostei + 0
08/05/2014
Marisiana Battistella
Nossas dicas t ajudaram?
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)