返回

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".

我看到的选项有:

  1. 使用自定义RowMapper做一些类似的事情myModel.setDate(rs.getTimestamp("Date").toLocalDateTime().toInstant(ZoneOffset.UTC));,但这似乎很冗长。我想我可以把它塞进某个实用类静态函数中?
  2. 使用LocalDateTime随处可见myModel.setDate(rs.getTimestamp("Date").toLocalDateTime()). 但杰克逊将在没有时区信息的情况下对其进行序列化。
  3. 启动时将整个应用程序时区设置为UTC。但这可能会被其他代码更改,从我所读到的内容来看,这通常是个坏主意。
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(1)
按点赞数排序
用户头像