mvb*_*b13 2 java postgresql java-time
我想将一个时间戳值保存到postgres数据库中。对应的列是TIMESTAMP WITHTIME TIME ZONE的类型。输入的Java应用程序获取纪元时间(长值)时,可以使用ZoneOffset.UTC将其转换为Instant或OffsetDateTime。
最好的方法是什么?这种方法有什么缺点吗?
根据文档,Instant不支持。但是您不应该OffsetDateTime在UTC中遇到问题。
在PostgreSQL的JDBC文档提到,对于相应类型TIMESTAMP [ WITHOUT TIMEZONE ]的LocalDateTime,但OffsetDateTime在UTC也支持。另一方面,Instant不支持。
请参阅下面的报价:
Run Code Online (Sandbox Code Playgroud)+--------------------------------+----------------+ | PostgreSQL™ | Java SE 8 | +--------------------------------+----------------+ | DATE | LocalDate | | TIME [ WITHOUT TIMEZONE ] | LocalTime | | TIMESTAMP [ WITHOUT TIMEZONE ] | LocalDateTime | | TIMESTAMP WITH TIMEZONE | OffsetDateTime | +--------------------------------+----------------+这与JDBC 4.2规范的表B-4和B-5紧密一致。需要注意的是
ZonedDateTime,Instant和OffsetTime/TIME [ WITHOUT TIMEZONE ]不支持。另请注意,所有OffsetDateTimewill实例都将采用UTC(偏移量为0)。这是因为后端将它们存储为UTC。
在JDBC 4.2规范似乎并不支持它Instant。
另请参阅OffsetDateTime类文档中的以下引号(重点是我的意思):
OffsetDateTime,ZonedDateTime并且Instant它们在时间轴上存储的时间点都达到了纳秒级的精度。即时是最简单的,仅表示即时。OffsetDateTime将与UTC /格林威治时间的偏移量添加到瞬间,从而可以获取本地日期时间。ZonedDateTime添加完整的时区规则。旨在
ZonedDateTime或Instant用于在较简单的应用程序中对数据建模。在更详细地建模日期时间概念时,或者在与数据库或网络协议进行通信时,可以使用此类。
| 归档时间: |
|
| 查看次数: |
69 次 |
| 最近记录: |