comparacao datas

24/08/2009

0

Olá pessoal,
O que vou postar aqui não é uma dúvida minha e sim uma teimosia de um colega de trabalho.
Estou tentando explicar pra ele o quanto está errado a seguinte comparação abaixo:
to_char(data,´dd-mm-yyyy´) between ´01-05-2009´ and ´30-05-2009´.
Tento explicar pra ele que o correto seria comparar com to_date (campo data eh data nao alfanumerico), que esta comparação acima vai trazer dados incorretos, mas não consigo passar isto pra ele, tem alguém que pode me passar uma resposta mais didática, com exemplos e tal.

Desde já agradeço!


Stgmta

Stgmta

Responder

Posts

25/08/2009

Emerson Nascimento

se a data for transformada em texto, ela seguirá a ordenação de um texto:

01-05-2009
01-06-2009
01-07-2009
01-08-2009
02-05-2009
02-06-2009
02-07-2009
02-08-2009
03-05-2009
03-06-2009
03-07-2009
03-08-2009
...
30-05-2009

então, se a condição do where for:
[b:91a00882e7]to_char(data,´dd-mm-yyyy´) between ´01-05-2009´ and ´30-05-2009´[/b:91a00882e7]
todas as linhas acima serão listadas.

agora, se forem datas, a ordenação será:
2009-05-01
2009-05-02
2009-05-03
2009-05-30
2009-06-01
2009-06-02
2009-06-03
2009-07-01
2009-07-02
2009-07-03
2009-08-01
2009-08-02
2009-08-03

se e o filtro utilizado for:
[b:91a00882e7]data between to_date(´01-05-2009´, ´dd-mm-yyyy´) and to_date(´30-05-2009´, ´dd-mm-yyyy´)[/b:91a00882e7]
serão retornados os registros
2009-05-01
2009-05-02
2009-05-03
2009-05-30

pois eles fazem parte do intervalo solicitado.


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar