gpt4 book ai didi

java - 如何使用 JPA 在 MS SQL Server 中存储时间戳?

转载 作者:太空宇宙 更新时间:2023-11-04 10:42:54 24 4
gpt4 key购买 nike

我有一个与 JPA 配合使用并使用 UTC 存储日期和时间的应用程序。我正在添加对 MS SQL Server 的支持,但不确定如何存储时间。标准 datetime/datetime2 仅返回本地时区的数据,而不是 UTC。

我考虑使用 datetimeoffset SQL Server 数据类型,但它返回的是一个专有对象,而不是标准 java.sql.Timestamp,与我正在使用的其他数据库不兼容。

我发现的唯一半工作解决方案是强制 JVM 时区为 UTC(例如 TimeZone.setDefault(TimeZone.getTimeZone("UTC")))。它导致 MS SQL Server 驱动程序返回 datetime/datetime2 数据类型的 UTC 时间。

有更好的解决方案吗?

最佳答案

有一种方法可以从 datetime/datetime2 MS SQL Server 数据类型获取 UTC 时间,而且不会破坏其他数据库。

解决方案是使用以下代码将从 DB 读取的 java.sql.Timestamp 转换为 Instant:sqlTimestamp.toLocalDateTime().toInstant(ZoneOffset.UTC)

参见https://github.com/Microsoft/mssql-jdbc/issues/339以获得更深入的解释。

关于java - 如何使用 JPA 在 MS SQL Server 中存储时间戳?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48744389/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com