【发布时间】:2019-08-11 14:48:36
【问题描述】:
我一直在尝试在 oracle DB 中保存带有偏移量的日期,但我设法找到了带有时区偏移量的时间戳的等效数据类型。
我正在尝试将此保存到数据库。我从 UI 收到这些日期(预期格式符合 ISO-8601)。我有以下代码。 POJO 包含两个字段。
@Column(columnDefinition = "TIMESTAMP WITH TIME ZONE")
private ZonedDateTime zonedDateTime;
@Column(columnDefinition = "TIMESTAMP WITH TIME ZONE")
private OffsetDateTime offSetDateTime;
DTO 具有相同数据类型但具有@JsonFormat 注释的相同字段,如下所示:
@JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSZZZ")
private ZonedDateTime zonedDateTime;
@JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSZZZ")
private OffsetDateTime offSetDateTime;
我从邮递员那里传递的日期如下:
{
"zonedDateTime" : "2011-07-04T17:19:56.235+07:00",
"offSetDateTime" : "2011-07-04T17:19:56.235+07:00"
}
数据库中保存的内容如下:
04-JUL-11 03.49.56.235000000 PM 亚洲/加尔各答 2011 年 7 月 4 日 03.49.56.235000000 PM 亚洲/加尔各答
我想将上面传递的 JSON 日期以相同的格式保存在数据库中,即以这种方式 '2011-07-04T17:19:56.235+07:00' 并希望以相同的时区格式检索它。
有人可以帮忙吗?
P.S 我使用的是 oracle 12 DB。如何使用 Java 实现这一点?
感谢阅读。
【问题讨论】:
-
但时间戳没有以格式保存;它只是使用格式显示。如果您需要保存格式,则必须将其保存为文本。用于显示的格式在用于显示的会话或工具中设置
-
好的,但是在那种情况下我也会丢失时区值,那么我该如何存储偏移量呢?要么将其存储为字符串,要么单独存储偏移量并进行转换?