从 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 格式存储,以消除时间点的歧义。
我需要数据库中日期的时间戳格式。 现在我在数据库中有 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 格式存储,以消除时间点的歧义。