我正在尝试从具有特定时间范围日期的表中获取数据。在这种情况下,我的时间表是一个月。当我尝试使用linq获取本月的数据时,我得到了111个条目,但是当我在sql server管理工作室中执行查询时,我得到了112个。
参赛作品的日期为:
- 2013-08-31 18:00:00.0000000 +07:00
- 2013-08-31 21:00:00.0000000 +03:00
- 2013-08-31 23:00:00.0000000 +01:00
当我尝试在8月1日00:00:00和8月最后一次23:59:59之间获取条目时,最后一个用linq过滤掉。
代码如下所示:
var startDate = new DateTime('01.08.2013');
var endDate = new DateTime('01.09.2013').AddMiliseconds(-1);
var count = dbContext.table.Where(d => d.Date >= startDate && d.Date <= endDate).Count();
为什么在linq中,为什么在直接sql执行显示该条目时过滤掉了最后一个条目?
答案 0 :(得分:0)
问题在于,服务器位于8月的时区不是现在的UTC + 01:00,而是因为夏令时的UTC + 02:00。因此,最后一个条目并没有参加到这个时区的8月,而是在9月1日。