在PostgreSQL中存储基于NodaTime的值的最佳方法是什么?

时间:2015-07-17 14:02:47

标签: c# postgresql nodatime

我们正在实施PostgreSQL,并且还决定使用NodaTime而不是标准的.NET DateTime。 PostgreSQL有一个“带时区的时间戳”类型,NodaTime通过SystemClock.Instance.Now方法返回带有时区的日期和时间值。但是,SystemClock.Instance.Now(2015-07-17T13:22:52Z)返回的值不能直接写入PostgreSQL字段。是否有处理NodaTime / PostgreSQL实现的最佳实践?

1 个答案:

答案 0 :(得分:4)

根据我的理解,"带时区的时间戳"无论如何都是用词不当 - 它只是提供了一个具有本地价值的时区,PostgreSQL将存储UTC" ...换句话说,它实际上是一个额外的转换,而不是存储更多数据。

如果您只是尝试存储Instant,那么timestamp应该可以作为数据类型。在获取数据库的值方面,您应该将其转换为DateTimeOffset,并让驱动程序处理它。您希望在存储时使用Instant.ToDateTimeOffset,在检索时使用Instant.FromDateTimeOffset