none
Problemas com formato de datas RRS feed

  • Pergunta

  • Estou com um problema em relação a aplicação de um cliente que se conecta com o Banco SQL Server (versão 2019).

    A aplicação executa uma query usando o formato de data 'YYYY/MM/AA'.

    Observem os dois exemplos:

    -- Consulta de documentos do dia 02/03/2020
    SELECT * FROM tblDocumento WHERE docDat = '2020/03/02';
    
    -- Consulta de documentos do dia 03/03/2020
    SELECT * FROM tblDocumento WHERE docDat = '2020/03/03';

    A tabela possui documentos em ambos os dias 02/03/2020 e 03/03/2020.

    O problema é que na aplicação, quando consulta pela data, não exibe registros do dia 02/03/2020, porém, exibe documento do dia 03/03/2020 em diante.

    A coluna docDat é do tipo datetime e as datas estão gravadas no banco com o formato "2020-03-02 00:00:00.000" e "2020-03-03 00:00:00.000".

    Já alterei a linguagem do banco para 'Português (Brasil)', 'us_english', entre outros, mas o problemas persiste somente com os documentos do dia 02/03/2020.

    Não se trata de uma consulta no SQL Server Management, onde eu poderia usar set dateformat ou até mesmo outro formato de data na query.

    Gostaria de saber se existe algo a nível de banco que possa ser feito para que essa aplicação consiga retornar registros do dia 02/03/2020.

    terça-feira, 9 de junho de 2020 02:03

Todas as Respostas

  • Estou com um problema em relação a aplicação de um cliente que se conecta com o Banco SQL Server (versão 2019).

    A aplicação executa uma query usando o formato de data 'YYYY/MM/AA'.

    Observem os dois exemplos:

    -- Consulta de documentos do dia 02/03/2020
    SELECT * FROM tblDocumento WHERE docDat = '2020/03/02';
    
    -- Consulta de documentos do dia 03/03/2020
    SELECT * FROM tblDocumento WHERE docDat = '2020/03/03';

    A tabela possui documentos em ambos os dias 02/03/2020 e 03/03/2020.

    O problema é que na aplicação, quando consulta pela data, não exibe registros do dia 02/03/2020, porém, exibe documento do dia 03/03/2020 em diante.

    A coluna docDat é do tipo datetime e as datas estão gravadas no banco com o formato "2020-03-02 00:00:00.000" e "2020-03-03 00:00:00.000".

    Já alterei a linguagem do banco para 'Português (Brasil)', 'us_english', entre outros, mas o problemas persiste somente com os documentos do dia 02/03/2020.

    Não se trata de uma consulta no SQL Server Management, onde eu poderia usar set dateformat ou até mesmo outro formato de data na query.

    Gostaria de saber se existe algo a nível de banco que possa ser feito para que essa aplicação consiga retornar registros do dia 02/03/2020.

    escreve data yyyymmdd

    SELECT * FROM tblDocumento WHERE docDat = '20200302';


    ou entao coloca dateformat que vc disse

    set dateformat ymd; SELECT * FROM tblDocumento WHERE docDat = '2020/03/02';


    ou entao usa convert

    SELECT * FROM tblDocumento WHERE docDat = convert(datetime,'2020/03/02',111);


    • Sugerido como Resposta Avatar SQL quarta-feira, 10 de junho de 2020 10:59
    terça-feira, 9 de junho de 2020 06:51
  • Bom dia,

    Jailton, na verdade as datas são armazenadas no banco de dados como um número quando são utilizados os tipos de dados específicos para data, o formato que você postou é utilizado apenas para exibição.

    Sobre a consulta, não sei qual linguagem você está utilizando no desenvolvimento da aplicação, mas acredito que a melhor opção seria utilizar um parâmetro para passar essa data, e esse parâmetro deve ser passado utilizando-se no caso o tipo de dados para data.

    Espero que ajude


    Assinatura: http://www.imoveisemexposicao.com.br

    terça-feira, 9 de junho de 2020 12:30
  • Jailton,

    Sigo a mesma linha de raciocínio do Gapimex!!!

    Acredito que este tratamento e até mesmo a maneira que as datas estão sendo reconhecidas e posteriormente tratadas devem ser realizadas na sua aplicação.

    Como estas datas estão sendo enviadas para o SQL Server?


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | MTAC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    terça-feira, 9 de junho de 2020 16:41