从 joda.Datetime 转换为 time.LocalDateTime 是正确的方法吗?

Convert from joda.Datetime to time.LocalDateTime is the right way?

我需要数据库中日期的时间戳格式。 现在我在数据库中有 joda.Datetime,但在我的 restApi 应用程序中也有。

我尝试创建一个新列,并转换了另一列 time.LocalDateTime 中现有的 joda.Datetime。我还用 time.LocalDateTime.

替换了所有代码 joda.DateTime

它有效,但是当我在邮递员中拨打电话时,我收到了 json 这样的消息:

{
seconds: x1,
minutes: x2,
hours: x3,
days: x4,
........
}

我想我需要一个转换器,将时间戳显示为 "dd-mm-yy hh-mm-ss"

我想在数据库中使用时间戳格式以便能够按时执行SQL标准操作和命名查询。

在我的数据库中,我有 bytea 类型的日期。我使用 PostgreSQL 和 DBeaver.

这是正确的方法吗,或者你可以推荐我另一种选择?

Is this the right way, or you could recommend me another option?

没有使用 Postgre 的经验SQL 我应该说 bytea 是您的日期或时间戳的错误数据类型。 timestamp with time zone 不错,支持SQL 操作和查询。它还具有可以直接存储 OffsetDateTime(甚至可能 Instant,我不确定)的优点,因此您可以避免格式化时间戳来存储它。这将被推荐。

要将时间戳记为时间戳日期和时间是不够的。日期和时间在不同的时区会有不同的解释(甚至在秋季夏令时结束且时钟倒转时会变得模棱两可)。据我所知,timestamp with time zone 将确保时间戳以 UTC 格式存储,因此时间点将是明确的。在 Java 中,Instant class 表示独立于时区的时间点,因此适用于时间戳。一些 JDBC 驱动程序允许您将 Instant 直接存储到 timestamp with time zone 列中,其他驱动程序要求您先转换为 OffsetDateTime。在后一种情况下使用

OffsetDateTime dateTimeForDatabase = yourInstant.atOffset(ZoneOffset.UTC);

编辑:请注意,with time zone 位有点像谎言,正如@Jon Skeet 在评论中指出的那样。数据库不存储时区或偏移量,它仅确保日期和时间以 UTC 格式存储,以消除时间点的歧义。

Link: Date/Time Types in the PostgreSQL docs