C# Linq日期比较与sql server management studio中的工作方式不同

C# Linq日期比较与sql server management studio中的工作方式不同,c#,sql-server,linq,datetime,C#,Sql Server,Linq,Datetime,我试图从一个带有特定时间段日期的表中获取数据。在这种情况下,我的时间表是一个月。当我尝试使用linq获取当月数据时,我得到111个条目,但当我在SQLServerManagementStudio中进行查询时,我得到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:

我试图从一个带有特定时间段日期的表中获取数据。在这种情况下,我的时间表是一个月。当我尝试使用linq获取当月数据时,我得到111个条目,但当我在SQLServerManagementStudio中进行查询时,我得到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();
var startDate=新日期时间('01.08.2013');
var endDate=新日期时间('01.09.2013')。添加毫秒(-1);

var count=dbContext.table.Where(d=>d.Date>=startDate&&d.Date问题是服务器所在时区的8月份不是现在的UTC+01:00,而是由于夏季时间的原因UTC+02:00。因此,该时区的最后一个条目没有在8月份参与,而是在9月1日。

数据库中该字段的数据类型是什么,以及您使用的SQL语句是什么?在时区处理方面,您的SQL语句和Linq语句之间似乎不一致。您是否尝试检查Linq查询生成的SQL语句?@JoachimIsaksson数据库中的字段是datetimeoffset(7)@MarcinJuraszek是的,我从linq查询中获取了生成的sql,并在sql studio中启动了它,但在studio中我得到了最后一个条目。我认为您正面临与应用程序服务器和DB服务器上的不同时区连接的本地化问题。这可能吗?