【问题标题】:Datetime accuracy when getting data from DB2 using Entity Framework使用实体框架从 DB2 获取数据时的日期时间准确性
【发布时间】: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


【解决方案1】:

获取作为 DateTime 和文本的值,解析微秒并使用此处的代码将它们添加到 DateTime:

Is there a high resolution (microsecond, nanosecond) DateTime object available for the CLR?

【讨论】:

    猜你喜欢
    • 2015-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-25
    • 1970-01-01
    • 2022-01-14
    • 2011-06-06
    相关资源
    最近更新 更多