我们正在try 在Java中映射OffsetDateTime并使用JDBCTemplate插入到SQL Server中.我们的客户分布在世界多个不同时区.

OffsetDateTime的合适的SQL Server/Azure SQL数据列类型是什么?我没有在这里的图表中看到它.https://learn.microsoft.com/en-us/sql/connect/jdbc/using-basic-data-types?view=sql-server-ver16

using java.time.OffsetDateTime

private OffsetDateTime purchaseDate;

我认为是MS SQL datetimeoffset,但是该表将Java类型显示为microsoft.sql.DateTimeOffset,而不是java.time.OffsetDateTime.

然而,在SQL中使用datetimeoffset似乎也适用于java.time.OffsetDateTime,只是想确认一下.

enter image description here

推荐答案

Kind of data Standard SQL MS SQL Server Java
Point on time line TIMESTAMP WITH TIME ZONE datetimeoffset In JDBC, use OffsetDateTime.
Outside of JDBC, generally best to use Instant or ZonedDateTime.

要表示时间线上的某个时刻,请使用SQL标准类型TIMESTAMP WITH TIME ZONE.在Microsoft SQL Server中,该类型映射到datetimeoffset.

Java提供了三个类来表示时间线上的一个点:

  • java.time.Instant
  • java.time.OffsetDateTime
  • java.time.ZonedDateTime

第一个表示与UTC的时间子午线有零时-分-秒偏移的时刻.第二个与UTC类似,但可以提前/落后于UTC的任何小时-分钟-秒的偏移量.第三个包含一个时区,它是特定地区人民使用的偏移量的过go 、现在和future 变化的命名历史,由特定地区的政治家决定.

SQL标准几乎没有涉及日期-时间问题,而且做得很差.该标准缺少InstantZonedDateTime类中包含的概念.因此,JDBC仅将OffsetDateTime类映射到类型TIMESTAMP WITH TIME ZONE的列.


至于你的图表,我不知道是怎么回事.这张图表似乎指的是这个班级,microsoft.sql.Types.DATETIMEOFFSET.这个类似乎是微软的JDBC驱动程序的一部分.但微软在JDBC中定义自己的映射类毫无意义,因为该类将与符合JDBC的程序不兼容.我不是微软的客户,所以我不能提供解释.

Java相关问答推荐

那么比较似乎不是词典学的,尽管doctor 这么说

如何使用CSS为选定但未聚焦的表格行设置背景 colored颜色 ?

如何在Docker容器中使用wireock—Webhooks阻止请求?

如何调用Firebase Realtime Database中的子图像列表到android studio中的回收器视图?

CAMEL 4中的SAXParseException

为什么一个Test的instance?& gt;在构造函数中接受非空对象?

我找不到&Quot;配置&的位置

在Spring终结点中,是否可以同时以大写和小写形式指定枚举常量?

更新AWS凭据

Java-动态绑定-问题-了解

MimeMessage emlMessage=new MimeMessage(Session,emlInputStream);抛出InvocationTargetException

如何为JavaFX Spring Boot应用程序制作Windows/MacOS/Linux安装程序

S,要对Java复制构造函数深度克隆所有属性进行单元测试,最可靠的方法是什么?

为什么我的回收视图会显示重复的列表?

如何将Java文档配置为在指定的项目根目录中生成?

舰队运行配置Maven版本

如果第一位数字和最后一位数字相差超过一位,您将如何获得随机数?

插入中的JOOQ序列,设置为VS值

如何通过Java java.lang.Foreign API访问本机字节数组

如何在单元测试中获得我的装饰Mapstruct映射器的实例?