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

标签 c# postgresql nodatime

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

最佳答案

据我所知,“带时区的时间戳”无论如何都是用词不当——它只是“你提供一个具有本地值的时区,PostgreSQL 将存储 UTC”……换句话说,它实际上是一个额外的转换,而不是比存储更多数据。

如果您只是想存储一个Instant,那么timestamp 应该可以作为一种数据类型。就获取数据库的值而言,您可能应该将其转换为 DateTimeOffset,然后让驱动程序处理它。你会想要使用 Instant.ToDateTimeOffset存储时,Instant.FromDateTimeOffset检索时。

关于c# - 在 PostgreSQL 中存储基于 NodaTime 的值的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31477681/

相关文章:

c# - .NET中进行事后分析的可能性有哪些(例如,程序崩溃后)?

c# - 如何封装只适用于少数方法的私有(private)字段

sql - 比较行之间的值

c# - 使用 NodaTime 解析输入并输出不同的日期时间格式

c# - GridView 取一行

c# - .net 麻烦类型转换整数做小数

postgresql - 表上的触发器(插入后)是否会减慢插入此表的速度

postgresql: "DO"处或附近的语法错误

c# - 在 Entity Framework Core 中使用 Npgsql.NodaTime

c# - 从 System.Text.Json 反序列化 NodaTime Instant