Linq 日期比较不像在 SQL Server Management Studio 中那样工作



我正在尝试从具有特定时间帧日期的表中获取数据。在这种情况下,我的时间范围是一个月。当我尝试使用 linq 获取当月的数据时,我得到 111 个条目,但当我在 sql 服务器管理工作室中执行查询时,我得到 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 月 8 月 1 日 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 执行显示该条目的任何线索?

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

相关内容

最新更新