spring—如何优雅地从 MSSQL Datetime2 转换为 java.time.Instant
发布时间:2022-06-04 09:36:22 233
相关标签: # 后端
我有一个简单的spring boot REST API应用程序,使用普通的jdbc从MSSQL DB获取数据。我正试图找出如何最好地检索DATETIME2
列(不存储时区信息),并将其序列化为UTC时间戳(通常在代码中这样处理)。
我的DB server时区设置为UTC。我知道存储到此列中的所有内容都存储为UTC,很遗憾,我无法更改列类型。这是一个遗留数据库,因此需要获取的所有日期都会有相同的问题,因此需要寻找一个干净整洁的解决方案。
理想情况下,在我的Java应用程序中,我希望;“日期”;字段类型为java.time.Instant
,因为它很容易处理,并将序列化为json"someDate": "2022-05-30T15:04:06.559896Z"
.
我看到的选项有:
- 使用自定义
RowMapper
做一些类似的事情myModel.setDate(rs.getTimestamp("Date").toLocalDateTime().toInstant(ZoneOffset.UTC));
,但这似乎很冗长。我想我可以把它塞进某个实用类静态函数中? - 使用
LocalDateTime
随处可见myModel.setDate(rs.getTimestamp("Date").toLocalDateTime())
. 但杰克逊将在没有时区信息的情况下对其进行序列化。 - 启动时将整个应用程序时区设置为UTC。但这可能会被其他代码更改,从我所读到的内容来看,这通常是个坏主意。
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报