【发布时间】:2014-12-02 14:07:30
【问题描述】:
假设我生活在今天日期为:2014 年 12 月 3 日的时区 在保存记录之前,我将日期保存为 UTC,所以它是 2014 年 12 月 2 日
user.Created = DateTime.UtcNow;
现在我有一个搜索页面,我想根据过滤器“今天”在该页面上检索记录。另外我想截断时间,所以我使用的是 EF 的 DbFunction。
DateTime dateDifference = DateTime.Now.Date;
var result= queryableData
.Where(s => dateDifference ==
DbFunctions.CreateDateTime(s.Created.Year, s.Created.Month,
s.Created.Day, 0, 0, 0)).AsQueryable();
上述查询没有返回任何记录,因为存储的日期是 UTC 时间,即 2014 年 12 月 2 日,但是我生活在一个日期为 2014 年 12 月 3 日的时区。所以这是有道理的,我怎样才能修改上面的查询来满足我的要求。任何建议
【问题讨论】:
-
数据库中的类型是什么?日期还是日期时间?
-
数据类型为DateTime,记录值保存为UTC时间12/2/2014 1:41 PM。
-
如果您将“今天本地”定义为午夜 + 24 小时的日期范围,那么您只需将“今天本地”翻译为“今天 UTC”并将其用作您的搜索条件。