EF Core SQL Server 使用 GETDATE() 代替 C# DateTime.Now

g.p*_*dou 5 sql-server entity-framework-core

我注意到,如果我的 C# 查询包含

(e => e.MyDateTimeData == DateTime.Now)
Run Code Online (Sandbox Code Playgroud)

生成的 SQL 使用

WHERE [e].[MyDateTimeData] = GETDATE()
Run Code Online (Sandbox Code Playgroud)

当 EF 客户端时区与 SQL Server 主机 SQL Server 进程用户时区不同时,这会不好。

即使客户端进程和 SQL Server 进程在同一主机上运行,​​时区也可能不同。

想念我的东西,或者这是一个真正的问题?

Dav*_*oft 3

如果您想使用客户端时间,请将其作为参数传递,如下所示:

var dt = DateTime.Now;
. . .
var q = db.SomeTable.Where(e => e.MyDateTimeData == dt)
Run Code Online (Sandbox Code Playgroud)