Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java Instant和MS SQL datetimeoffset_Java_Sql Server_Datetime - Fatal编程技术网

java Instant和MS SQL datetimeoffset

java Instant和MS SQL datetimeoffset,java,sql-server,datetime,Java,Sql Server,Datetime,我正在使用spring、mybatis、mssql-jdbc-8.4.1 我有非常简单的测试代码来保存模型并从数据库中获取模型。 模型字段的类型为Instant,DB列的类型为datetimeoffset 在持久化/获取后,我的时区偏移量正好有时差。 将DB列类型更改为datetime2可以解决此问题 Q:我应该将其视为基础库问题(mybatis或jbdc驱动程序),还是错误地期望java Instant保存在UTC时区中,并以此方式获取以保持有效的“Instant” 将DB列类型更改为date

我正在使用spring、mybatis、mssql-jdbc-8.4.1

我有非常简单的测试代码来保存模型并从数据库中获取模型。
模型字段的类型为Instant,DB列的类型为datetimeoffset

在持久化/获取后,我的时区偏移量正好有时差。
将DB列类型更改为datetime2可以解决此问题

Q:我应该将其视为基础库问题(mybatis或jbdc驱动程序),还是错误地期望java Instant保存在UTC时区中,并以此方式获取以保持有效的“Instant”

将DB列类型更改为datetime2可以解决此问题

datetime2
是与ANSI SQL
TIMESTAMP
类型对应的MS SQL Server类型,它映射到JDBC 4.2中的
LocalDateTime
。A不包含任何时区信息,因此您将始终获得相同的值

如果要以这样一种方式存储它,即检索到的值应在具有不同偏移值的时区中自动更改,则应将其保存到类型为“
TIMESTAMP with timezone
”的数据库字段中,该字段对应于
OffsetDateTime
。请注意,大多数JDBC驱动程序不支持
Instant
ZonedDateTime
。此外,大多数驱动程序要求
OffsetDateTime
实例的时区偏移量为
+00:00
小时,因为后端将它们存储为UTC

查看更多信息

将DB列类型更改为datetime2可以解决此问题

datetime2
是与ANSI SQL
TIMESTAMP
类型对应的MS SQL Server类型,它映射到JDBC 4.2中的
LocalDateTime
。A不包含任何时区信息,因此您将始终获得相同的值

如果要以这样一种方式存储它,即检索到的值应在具有不同偏移值的时区中自动更改,则应将其保存到类型为“
TIMESTAMP with timezone
”的数据库字段中,该字段对应于
OffsetDateTime
。请注意,大多数JDBC驱动程序不支持
Instant
ZonedDateTime
。此外,大多数驱动程序要求
OffsetDateTime
实例的时区偏移量为
+00:00
小时,因为后端将它们存储为UTC

查看更多信息