对年-月-日时间类型进行比较

由于业务要求,需要添加查询,而查询的时间格式为“2018-05-13”;数据库的时间格式为“2018-05-10 17:32:31”

 var entity = context.Infomations.OfType<Docments>().Where(f => (!param.TypeId.HasValue || f.TypeId == param.TypeId)                  //Docments模型继承于Infomations    
                        && (string.IsNullOrEmpty(param.Title) || f.Title.Contains(param.Title))
                        && (!param.Level.HasValue || f.Level == param.Level)
                        && (!param.IsValid.HasValue || f.IsPublish == param.IsValid)
                        && (!param.BeginTime.HasValue || f.CreateTime >= param.BeginTime)
                        && (!param.EndTime.HasValue || f.CreateTime <= param.EndTime)).OrderByDescending(f =>f.CreateTime).ToList();

这里存在一个问题,就是当开始时间和结束时间选择同一天时,筛选不出来。如选择2018-05-08,这时开始时间和结束时间均为“2018-05-08 00:00:00”,这只能取出创建时间为“2018-05-08 00:00:00”的数据,而不是这一天的数据;

方案一:在进行筛选值钱给结束时间加上一天

     param.EndTime = param.EndTime.Value.AddDays(1);

时间范围变成:“2018-05-08 00:00:00”----“2018-05-09 00:00:00”

方案二:将开始时间和结束时间进行字符串拼接成(“2018-05-08 00:00:00”----“2018-05-09 23:59:59”),再转为时间类型进行比较

   string startTimeStr = DateTime.Now.ToString("yyyy-MM-dd") + " 00:00:00";
    DateTime startTime = DateTime.Parse(startTimeStr);
    string endTimeStr = DateTime.Now.ToString("yyyy-MM-dd") + " 23:59:59";
    DateTime endTime = DateTime.Parse(endTimeStr);
    Console.WriteLine(startTime);
    Console.WriteLine(endTime);

原文地址:https://www.cnblogs.com/likui-bookHouse/p/9067157.html