Linq日期比较在sql server management studio中不起作用

时间:2014-02-26 07:30:29

标签: c# sql-server linq datetime

我正在尝试从具有特定时间范围日期的表中获取数据。在这种情况下,我的时间表是一个月。当我尝试使用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执行显示该条目时过滤掉了最后一个条目?

1 个答案:

答案 0 :(得分:0)

问题在于,服务器位于8月的时区不是现在的UTC + 01:00,而是因为夏令时的UTC + 02:00。因此,最后一个条目并没有参加到这个时区的8月,而是在9月1日。