none
Consulta não retorna valores esperados RRS feed

  • Pergunta

  • Bom dia!

    Preciso mostrar registros de uma tabela de acordo com a data de cadastros referente aos últimos 30 dias.

    Estou usando a instrução SQL, mas nada é retornado: 

    DateTime hoje = DateTime.Now.Date; 

    "SELECT nome, plantonista, dataCadastro FROM assistidos WHERE dataCadastro BETWEEN #" + hoje.AddDays(-30).ToShortDateString() + "# AND #"+ hoje.ToShortDateString() + "# AND p_saude=true"

    A tabela possui 3 registros com a dataCadastro=08/10/2017 e todos os campos p_saude como true.

    A tabela foi feita em Access e o campo dataCadastro está no formato Data/Hora e p_saude, Sim/Não.

    Preciso da ajuda de vocês para resolver este problema! Obrigado.

    terça-feira, 10 de outubro de 2017 12:53

Respostas

Todas as Respostas

  • A primeira vista parece que não está retornando porque você não colocou a data completa (usa "....ToShortDateString"), também veja se o campo "dataCadastro" está no formato correto

    ------------------------------------------ "Existem 10 tipos de pessoas: as que entendem números binários e as que não entendem..."

    terça-feira, 10 de outubro de 2017 13:44
  • Se eu não usasse ToShortDateString a data viria com o horário.

    O campo dataCadastro está no formato Data/Hora.

    O debug mostra:

    


    • Editado JuniorPK terça-feira, 10 de outubro de 2017 14:17
    terça-feira, 10 de outubro de 2017 14:16
  • Eu fiz o teste aqui e, no campo de dateTime só aceita mesmo completo: data + horário

    experimente colocar ... BETWEEN #10/09/2017# 00:00:00 AND #10/10/2017 23:59:59# ...


    ------------------------------------------ "Existem 10 tipos de pessoas: as que entendem números binários e as que não entendem..."

    terça-feira, 10 de outubro de 2017 15:12
  • Eu já tinha feito isso ao tirar .ToShortDateString()...

    Mesmo assim não volta os registros corretamente.

    terça-feira, 10 de outubro de 2017 15:17
  • Tente assim talvez de certo..

    "SELECT nome, plantonista, dataCadastro FROM assistidos WHERE dataCadastro >= #" + hoje.AddDays(-30).ToShortDateString() + " 00:00:00# AND p_saude=true"

    TKS.

    terça-feira, 10 de outubro de 2017 17:01
  • Tô achando que o problema é que o Access só aceita datas no formato americano, ou seja, mm/dd/yyyy...

    Como faço para converter as datas deste formato para o formato do Brasil?

    terça-feira, 10 de outubro de 2017 17:08
  • Faça uma consulta retornando todos os valores, e veja como ira retornar o formato da data..

    Um 

    " select * from assistidos "

    terça-feira, 10 de outubro de 2017 17:53
  • "SELECT nome, plantonista, dataCadastro FROM assistidos WHERE dataCadastro >= #" + hoje.AddDays(-30).ToString("MM/dd/yyyy") + " 00:00:00# AND p_saude=true"


    terça-feira, 10 de outubro de 2017 18:10
  • Está voltando no formato que eu digito pela interface do programa, ou seja, dd/mm/yyyy.
    terça-feira, 10 de outubro de 2017 18:12
  • experimenta digitar uma data como 23/12/2017, pois caso digite 10/10/2017 ira retornar nessa mesma sequencia pois se o primeiro for um mes ira dar erro 

    terça-feira, 10 de outubro de 2017 18:20
  • Bom dia,

    Por falta de retorno essa thread está encerrada.

    Se necessário, favor abrir uma nova thread.

    Atenciosamente,

    Filipe B de Castro

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    segunda-feira, 16 de outubro de 2017 13:21
    Moderador