繁体   English   中英

保存到数据库时日期值被更改

[英]Date value is getting changed when saving to database

我使用实体框架核心将两个日期时间变量保存到SQL数据库(托管在Azure中)表中。 保存后以某种方式查询数据库时,我注意到datetime值已更改。 您可以在下面保存之前看到初始值。

固定值的代码

保存后,在数据库中显示如下

SQL表值

我通读了一些技术文档,以查找可能对此产生影响的因素。 不过,我没有发现任何有趣的东西。

您能帮我了解此数据更改的原因吗? 我很确定没有任何存储过程或任何其他脚本可以更改这些日期。

// step 3: update tblStudent
var tblStudentEntityToUpdate = await _applicationDbContext.Value.StudentApplications.FirstOrDefaultAsync(x => x.StudentID == vm.StudentID);
vm.GuardianID = guardianId;

_applicationDbContext.Value.Entry(tblStudentEntityToUpdate).CurrentValues.SetValues(vm);
await _applicationDbContext.Value.SaveChangesAsync();

正如zaitsman在评论中提到的那样,原因是您正在使用本地格式的DateTime。 无论选择哪个数据中心位置,您的SQL Azure服务器都设置为UTC时区。 AFAIK,此设置无法更改。

始终建议将DateTimes存储为UTC,因为这样可以避免您在本地时间写入然后在不同时区假设下读取它的任何问题。

据我了解,您的应用程序应该运行良好,因为您的应用程序将读取这些值并将其正确存储为UTC DateTimes,然后,如果您想在特定时区显示此信息,则可以调用DateTime.ToLocalTime。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM