left-closed 日期间隔意外,使用 NHIBERNATE 查询

left-closed Interval of dates unexpected, query using NHIBERNATE

我在 DAL 中有一个方法 class:

public IList<HouseHold> FindByDate(DateTime start, DateTime end)
{
    using (ISession session = NHibernateHelper.AbreSession())
    {
        return session.CreateCriteria<HouseHold>()
            .Add(Expression.Between("RegistrationDate", start, end))
            .List<HouseHold>();
    }
}

有了这个,我希望从一个封闭间隔之间的日期获取数据。但是当我使用这个方法时,它的结果是一个左闭区间,就像这样:

private IList<HouseHold> LoadData()
{
    hh = dao.FindByDate(start.SelectedDate.Value, end.SelectedDate.Value);
    return hh;
}

我从 DataPicker (WPF) 中选择 20/08/2015 和 22/08/2015 之间的日期,它显示从 20 到 21 的结果。但是当我选择日期 20/08/2015 和 23 /08/2015 它显示 20 到 22 的结果,而我知道那是 23 的结果!

怎么了?

看来我们必须将上午时间转换为午夜时间。即来自 23/08/2015 00:00 - 我们需要 23/08/2015 23:59

最简单的方法就是添加一天

.Add(Expression.Between("RegistrationDate", start, end.AddDay(1)))