我有一个在UTC时区中运行的Azure SQL Server数据库,以及一个在EST时区中运行的C#EF WebApi。
不能选择更改SQL Server时区或WebApi的时区。
在此查询中,EF使用的是SQL Server的DateTime.Now值:
var results = db.Table1.Where(t => t.PublishedDate < DateTime.Now)
在此查询中,EF使用的是DateTime.Now的WebApi值:
var now = DateTime.Now;
var results = db.Table1.Where(t => t.PublishedDate < now)
第二个查询根据WebApi的时区返回正确的结果。
在第一个示例中,为什么EF将DateTime.Now解释为SQL Server的时区?有没有一种方法可以防止第一个查询正常工作?