[firebase-br] Select que monta o ano na condição(erro em ano bissexto)

Alysson Gonçalves de Azevedo agalysson em gmail.com
Sex Jan 31 10:37:28 -03 2014


Eu estou sem um banco aqui para testar, mas eu tentaria tratar essa data
como uma string.
Pelo que eu me lembro (e me corrijam se estiver errado), comparações em
strings como "a" < "b" < "c" funcionam.
Dai, "2014-02-28" < "2014-02-29" < "2014-03-01". Isso simplificaria mt.

Mas sempre mantenha os 2 dígitos para mês e dia, se não fica "2013-11-01" <
"2013-2-1".


Teste ai e me fala se funciona.



Alysson Gonçalves de Azevedo

"Anarcho-syndicalism is a way of preserving freedom." - Monty Python


Em 31 de janeiro de 2014 09:44, Marco Aurélio <marco.istccp em gmail.com>escreveu:

> Muito obrigado pela ajuda pessoal(gracias Walter).
>
> Postarei a solução.
>
> Abraço
>
>
> Em 31 de janeiro de 2014 00:38, W O <sistemas2000profesional em gmail.com
> >escreveu:
>
> > Un año es bisiesto si:
> >
> > a) es divisible por 4
> > b) si termina con 00, los dos primeros dígitos también deben ser
> divisibles
> > por 4
> >
> > 1900 no fue bisiesto (porque 19 no es divisible por 4)
> > 2000 sí fue bisiesto (porque 20 es divisible por 4)
> > 2011 no fue bisiesto (porque no es divisible por 4)
> > 2012 sí fue bisiesto (porque sí es divisible por 4)
> > 2013 no fue bisiesto (porque no es divisible por 4)
> > 2014 no es bisiesto (porque no es divisible por 4)
> > 2015 no será bisiesto (porque no es divisible por 4)
> > 2016 sí será bisiesto (porque es divisible por 4)
> > 2100 no será bisiesto (porque 21 no es divisible por 4)
> >
> > Saludos.
> >
> > Walter.
> >
> >
> >
> > 2014-01-30 Frederico Godoi <frederico.godoi em gmail.com>:
> >
> > > Marco, pra testar ano Bissexto teria que testar o resta da divisão do
> ano
> > > por 4.
> > > Agora para essa finalidade, acho que não é o caso, precisa trazer o dia
> > de
> > > volta para 28 para retornar certo, eu acho.
> > >
> > > Veja essa sugestão, vai precisar ajustar, claro
> > >
> > > SELECT C.CODCONTATO,
> > >        COALESCE(C.NOMEFANTASIA,C.RAZAOSOCIAL) AS NOME,
> > >        COALESCE(C.TELEFONE,C.TELEFONE2, C.TELEFONE3, C.CELULAR, 'SEM
> > > TELEFONE CADASTRADO') AS TELEFONE,
> > >        C.DTAFUNDACAO,
> > >        C.DTANASC
> > >   FROM CONTATOS C
> > >  WHERE C.DTANASC IS NOT NULL
> > >   AND  IIF(EXTRACT(DAY FROM C.DTANASC)||'-'||EXTRACT(MONTH FROM
> > C.DTANASC)
> > > <> '29-02',
> > >            CAST(
> > >                 EXTRACT(YEAR FROM CURRENT_DATE) || '-' ||
> > >                 EXTRACT(MONTH FROM C.DTANASC) || '-' ||
> > >                 EXTRACT(DAY FROM C.DTANASC) AS DATE
> > >                 ) BETWEEN  CURRENT_DATE AND CURRENT_DATE+5 ),
> > >            CAST(
> > >                 EXTRACT(YEAR FROM CURRENT_DATE) || '-' ||
> > >                 EXTRACT(MONTH FROM C.DTANASC) || '-' ||
> > >                 EXTRACT(DAY FROM C.DTANASC)-1 AS DATE
> > >                 ) BETWEEN  CURRENT_DATE AND CURRENT_DATE+5 )
> > >            )
> > >   AND C.JURIDICA_FISICA = 'F'
> > >   AND C.SITUACAO = 'A'
> > >
> > >
> > > Abs
> > >
> > > Frederico Godoi
> > >
> > > 2014-01-30 Marco Aurélio <marco.istccp em gmail.com>:
> > >
> > > > Salve pessoal,
> > > > o select é o seguinte:
> > > >
> > > > SELECT
> > > >   C.CODCONTATO,
> > > >   COALESCE(C.NOMEFANTASIA,C.RAZAOSOCIAL) AS NOME,
> > > >   COALESCE(C.TELEFONE,C.TELEFONE2, C.TELEFONE3, C.CELULAR, 'SEM
> > > > TELEFONE CADASTRADO') AS TELEFONE,
> > > >   C.DTAFUNDACAO,
> > > >   C.DTANASC
> > > >  FROM
> > > >   CONTATOS C WHERE
> > > >   C.DTANASC IS NOT NULL
> > > >
> > > >   AND   CAST(
> > > >             EXTRACT(YEAR FROM CURRENT_DATE) || '-' ||
> > > >             EXTRACT(MONTH FROM C.DTANASC) || '-' ||
> > > >             EXTRACT(DAY FROM C.DTANASC) AS DATE
> > > >         )
> > > >
> > > >   BETWEEN  CURRENT_DATE AND (CURRENT_DATE + CAST(' +
> > > > PARAMETRO(__DIAS_ANTECEDENCIA_AVISAR_ANIVESARIANTES,'0') + 'AS
> > > > INTEGER))
> > > >
> > > >   AND C.JURIDICA_FISICA = 'F'
> > > >   AND C.SITUACAO = 'A'
> > > >
> > > > Depois de muito tempo, e de muitos usuários cadastrados, apareceu
> > > > alguém com a data de aniversário 29/02,
> > > > Como posso fazer para tratar o ano bissexto nesta consulta?
> > > > (provavelmente vou ter de montar outra mesmo).
> > > >
> > > > Obrigado,
> > > > Marco
> > > > ______________________________________________
> > > > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > > > Para saber como gerenciar/excluir seu cadastro na lista, use:
> > > > http://www.firebase.com.br/fb/artigo.php?id=1107
> > > > Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> > > >
> > >
> > >
> > >
> > > --
> > > Frederico Godoi
> > > ______________________________________________
> > > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > > Para saber como gerenciar/excluir seu cadastro na lista, use:
> > > http://www.firebase.com.br/fb/artigo.php?id=1107
> > > Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> > >
> > ______________________________________________
> > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > Para saber como gerenciar/excluir seu cadastro na lista, use:
> > http://www.firebase.com.br/fb/artigo.php?id=1107
> > Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> >
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



Mais detalhes sobre a lista de discussão lista