Novo AdSense

quinta-feira, 8 de novembro de 2012

Trabalhando com campo Date em Sybase

Bom dia a todos da internet!


Sei que é meio antiquado falar deste banco de dados... rsrsrsrs

Mas ainda trabalho com ele  aqui na empresa, e venho passando por alguns problemas com campos do tipo Date ou DateTime.

Pois bem vamos ao problema para podermos apresentar a solução (Que resolveu no meu caso.):
Quando efetuamos uma Query via conexão ODBC e colocamos o retorno deste campo em um atributo do tipo String, a conexão ODBC interpreta o tipo NULL como a data '1899-12-30', isso faz com que o atributo seja diferente de ''(String vazia), então quando este atributo não é tratado e um comando de "Insert" ou "Update" é executado no sistema a data '1899-12-30' é colocada no banco de dados.
Após este ocorrido quando executamos uma consulta no banco de dados procurando por datas do tipo NULL os dados que receberam a data '1899-12-30' não retornam. Isso já era esperado até porque '1899-12-30' é diferente de NULL, mas nem sempre isso é lembrado ao fazermos uma seleção com o critério NULL envolvido.

Portanto depois de algumas avaliações em bases que já estão rodando a algum tempo cheguei a uma conclusão e criei alguns passos para seleção neste tipo de caso:

1º - Quando o critério "IS NULL" é utilizado as Datas iguais a "1899-12-30" não são selecionadas.

2º - Quando o critério "1899-12-30" é utilizado com o operador "=" apenas as registros com essa data é retornado.

3º - Qaundo o critério "IS NOT NULL" é utilizado a data ''1899-12-30" é incluída na  seleção.

4º - Para selecionar data nulas utilizamos a seguinte sintaxe:
       - ...Where Campo IS NULL or Campo = '1899-12-30';

5º - Para selecionar datas não nulas utilizamos a seguinte sintaxe:
       - ...Where Campo IS NOT NULL or Campo <> '1899-12-30';

E por hoje é só pessoal. Espero ter ajudado (Pelo menos um!)....

Abraço!

2 comentários:

  1. Esse banco é um pesadelo cara. kk

    ResponderExcluir
    Respostas
    1. Concordo amigo, por isso venho tentando fazer eles mudarem aqui na empresa... kkkkkk

      Excluir