【发布时间】:2016-12-11 02:31:52
【问题描述】:
我正在尝试使用 C# 将日期时间存储在 Access 数据库中。我正在 Visual Studio 2015 中编写应用程序。当我从 Access 表中读取值时,它与我存储在其中的值不完全匹配。滴答数不同。我看过一些关于 .NET System.DateTime 和 SQL server DateTimes 之间差异的帖子。看来,对于 SQL 服务器,我应该使用SqlDateTime or a datetime2。就我而言,我使用的是旧版 .mdb Access 数据库文件。我也许可以升级到 accdb 文件。
【问题讨论】:
-
Access(MDB 和 AccDB)支持直接存储 DateTime 值。如果您观察到差异,可能是由于时区转换。您应该在所有持久性介质中将 UTC 值存储为
DateTimeOffset,而不仅仅是数据库。 -
...所以我的观点是,您不应该天真地将 Ticks 存储在数据库中(因为并非每个消费系统都使用相同的 tick 时期和分辨率)。但如果这样做,请确保使用足够大的整数列类型(即至少 64 位)。请注意,Access 默认使用 4 字节整数,而不是 8 字节。
-
那么基本上在数据库中保存一个DateTimeOffSet(myDateTime)?
-
您如何使用您的数据库?您是否使用“原始”ADO.NET(
OleDbReader或OdbcDataReader?)、DataTables?实体框架? NHibernate?
标签: c# .net datetime ms-access