我有一个 DateTimeOffSet 类型的变量。我想过滤 2010 年 1 月 1 日之后创建的所有项目。
所以我写了以下查询:
var _date = new DateTimeOffset(2010, 01, 01, 0, 0, 0, new TimeSpan(-7, 0, 0));
var projects = _repository.Find<Project>
(x => x.CompanyId = CompId && x.CreatedOn > _date)
.ToList();
但是当我查看数据库时,我看到的值类型如下:
2001-01-25 05:21:46.4370000 -08:00
2005-06-17 00:00:00.0000000 -07:00
显然,有些值已经-08:00和其他人有-07:00。那么我上面的查询仍然相关吗?当我查看结果时,过滤正在按我预期的方式完成。唯一关心的是那个偏移部分的含义是什么,也许结果是偶然的好。
我对路不太熟悉日期时间偏移集 works.
那么我上面的查询仍然相关吗?
是的。当你比较两个DateTimeOffset
值,它是比较的“绝对”时间。该文档在以下方面讨论了这一点UtcDateTime
财产。例如,从op_GreaterThan文档 http://msdn.microsoft.com/en-us/library/system.datetimeoffset.op_greaterthan(v=vs.110).aspx:
true if the UtcDateTime
的价值left晚于UtcDateTime
的价值right;否则,false.
因此,只要这是您想要的行为(我想是的),您应该没问题。 (诚然,我们不知道查询在哪里执行 - 如果这是 LINQ to SQL 或 EF,那么您将依赖that实现相同的语义,但我认为这是一个合理的期望。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)