none
Comparação de dados com campos do tipo datetime LINQ RRS feed

  • Pergunta

  • Tenho no meu MySql alguns campos do tipo datetime  no seguinte formato : "2017-05-31 20:51:18"

    Preciso fazer uma comparação com intervalo de data (between) utilizando o EntityFramework, entretanto, meus valores de pesquisa geralmente vem no formato "01/05/2017 00:00:00".

    vQuery = db.e115nfe.Where(x => x.CNPEMI == vCnpEmi
                                                   && x.RECXML.Value.Date >= vAuxDatIni
                                                   && x.RECXML.Value.Date <= vAuxDatFim)
                                    .OrderBy(x=>x.DATENT)
                                    .ToList();

    Alguém já passou por esta dificuldade e conseguiu resolver?

    quinta-feira, 1 de junho de 2017 18:34

Respostas

  • Consegui resolver.

    Quando o campo é do tipo "datetime", no ato da comparação é utilizado todo o registro, no meu caso estava "01/05/2017 12:40:32". Para conseguir comprar corretamente fiz da seguinte maneira: 

    Valor recebido para consulta: "01/01/2017 - 31/05/2017"

                               

    //tratamento de datas
    var aux = valorPesquisa.Replace(" ", "").TrimStart().TrimEnd();

    var vAuxDatIni = aux.Substring(0, 10)+" 00:00:01";
    var vAuxDatFim = aux.Substring(11, 10) + " 23:59:59";



     vQuery= db.e115nfe.AsEnumerable()

                                    .Where(x => x.CNPEMI == vCnpEmi
                                                   && x.RECXML >= Convert.ToDateTime(vAuxDatIni)
                                                   && x.RECXML <= Convert.ToDateTime(vAuxDatFim))
                                    .OrderBy(x => x.RECXML)
                                    .ToList();

    • Marcado como Resposta Nelson_lucas quinta-feira, 1 de junho de 2017 23:34
    quinta-feira, 1 de junho de 2017 23:19