【发布时间】:2016-09-14 15:17:21
【问题描述】:
我有一个 IBM DB2 数据库,我需要从一个主键列中获取值,它是 TIMESTAMP。 该主键采用以下格式:dd.MM.yyyy hh:mm:ss.ffffff
我需要完全准确地得到它。 但是,当我使用实体框架获取数据时,最后 3 个数字丢失了。
我得到这种格式:dd.MM.yyyy hh:mm:ss.fff。 有没有一种简单的方法来解决这个问题并获得精确的数据,比如以某种方式告诉实体框架我期望这种特定格式的数据时间?
【问题讨论】:
-
是否以毫秒为单位存储在数据库中?如果没有,您可以将其存储为字符串,然后使用 DateTime.ParseExact() 将其解析回完整格式:msdn.microsoft.com/en-us/library/w2sa9yss(v=vs.110).aspx
-
毫秒数超过 3 位是没有意义的。它们只能从 0 到 999。
-
@PedroG.Dias 您好 Pedro,感谢您的回答。在 DB2 中,值以正确的格式存储。这是一个时间戳,当实体框架从那里获取它时就会出现问题。我认为它是削减最后 3 个数字的那个......
-
也许一种解决方法是将日期时间字段映射到一个字符串,然后使用 ParseExact,从而绕过 EF 完成的日期时间转换 - 虽然在性能方面可能不是一个好的解决方案,也许有人知道更好的方法?
-
没有。问题是,DB2 TIMESTAMP 似乎具有微秒的精度,但 DateTime 只能处理毫秒。无论他如何解析,他都无法在 DateTime 中保持 TIMESTAMP 的全部准确性。
标签: c# entity-framework datetime db2