none
Consulta Data e Hora

    Question

  • Estou tentando fazer uma consulta onde a consulta é a seguinte:

    SELECT DthFimCarga FROM Cargas WHERE DthFimCarga = '08/01/2007 13:55:55'

    Mas não me retorna nenhuma linha, sendo que consultei manualmente no banco e consta esta data e hora no campo. Se realizo a consulta sem o WHERE, mostra essa data e hora. Alguém pode me dizer o que está acontecendo? Qual é a solução para a minha consulta?

    Desde já agradeço a atenção, obrigado!

    Monday, January 08, 2007 4:31 PM

Answers

  • Olá Luidy,

    Como está a data na sua tabela ? Vale lembrar que se vc estiver usando um campo do tipo datetime então quando vc usa o sinal de = o sql buscará a data/hora considerando os milissegundos ou seja: '2007-01-08 15:23:03.797' .

    Se vc procurar apenas 2007-01-08 15:23:03 (sem especificar os milissegundos), o SQL não encontrará nada!!

    Para resolver este vc terá que trabalhar com range de data exemplo:

    Data >= '2007-01-08 15:23:03'  AND Data <= '2007-01-08 15:23:03.997'

    Com isso o SQL Server pegará TODO o range do dia 08/01.

    Quanto a função, veja se esta te ajuda http://www.mcdbabrasil.com.br/modules.php?name=News&file=article&sid=254

    um abraço
    Nilton Pinheiro
    www.mcdbabrasil.com.br

    PS: Foi útil para vc? Então marque o post como útil!


     

    Monday, January 08, 2007 5:28 PM
    Moderator

All replies

  • o valor que é esperado pelo SQL Server é no formato  MES/DIA/ANO  e vc esta passando   DIA/MES/ANO

    tente fazer o seguinte  inverter no formato

    SELECT DthFimCarga FROM Cargas WHERE DthFimCarga = '01/08/2007 13:55:55'

     

    ou então alterar o formato

    SET DATEFORMAT DMY

    SELECT DthFimCarga FROM Cargas WHERE DthFimCarga = '08/01/2007 13:55:55'

    ABS

    Qualquer dúvida retorne

    Monday, January 08, 2007 4:39 PM
  • se o default language do usuario esta ingles tente

    SELECT DthFimCarga FROM Cargas WHERE DthFimCarga = '2007-01-08 13:55:55'

    mais veja se vc. tem dados nesta hora.

     

    Abs;

     

    Monday, January 08, 2007 4:40 PM
    Moderator
  • Olá Andre e Marcelo,

    Já tentei todas essas opções, mas não deram certo. Conferi novamente se existe esse dado no banco e realmente existe. Será que não existe alguma função que possa dar certo esse tipo de consulta?

    Abraços!

    Monday, January 08, 2007 5:13 PM
  • Ou vc faz a pesquisa utilizando LIKE ou então informe os Milisegundos da Hora

     

    Espero ter ajudado

    Monday, January 08, 2007 5:22 PM
  • Olá Luidy,

    Como está a data na sua tabela ? Vale lembrar que se vc estiver usando um campo do tipo datetime então quando vc usa o sinal de = o sql buscará a data/hora considerando os milissegundos ou seja: '2007-01-08 15:23:03.797' .

    Se vc procurar apenas 2007-01-08 15:23:03 (sem especificar os milissegundos), o SQL não encontrará nada!!

    Para resolver este vc terá que trabalhar com range de data exemplo:

    Data >= '2007-01-08 15:23:03'  AND Data <= '2007-01-08 15:23:03.997'

    Com isso o SQL Server pegará TODO o range do dia 08/01.

    Quanto a função, veja se esta te ajuda http://www.mcdbabrasil.com.br/modules.php?name=News&file=article&sid=254

    um abraço
    Nilton Pinheiro
    www.mcdbabrasil.com.br

    PS: Foi útil para vc? Então marque o post como útil!


     

    Monday, January 08, 2007 5:28 PM
    Moderator
  • Luidy,

    Você já tentou utilizar a função Convert, veja o exemplo:

    SELECT DthFimCarga FROM Cargas WHERE Convert(Char(20),DthFimCarga) = '01/08/2007 13:55:55'

    Monday, January 08, 2007 5:30 PM
  • Olá Anderson,

    Eu tentei utilizar o LIKE, mas mesmo assim não funciona.

    Como eu transformo a minha hora 13:55:55 em milissegundos?

    abraços!

    Monday, January 08, 2007 5:38 PM