Java Oracle db能够比较不同时区的时间戳吗?
我想知道Oracle是否能够比较不同时区的日期,如: 2016年12月26日3:58:16.491476 AM-06:00>2016年12月26日3:58:16.491476 AM+05:00 顺便说一句,我用JPA做这个比较,目的是查找一小时前创建的所有行 我发现我可以使用After关键字来查找它(即findMeasureDateAfter)ISO 8601 首先,如果这些输入实际上是问题中给出的字符串,则尽可能使用标准格式。标准格式对人类来说是直观的,并且更容易被计算机解析。实际上,java.time类在解析/生成字符串时默认使用ISO8601格式 java.time 虽然我不知道Oracle中的查询(我自己也是一名Postgres人员),但我可以在Java方面更多地展示如何形成查询 理想情况下,我们将把该输入字符串解析为Java Oracle db能够比较不同时区的时间戳吗?,java,spring,oracle,date,spring-data-jpa,Java,Spring,Oracle,Date,Spring Data Jpa,我想知道Oracle是否能够比较不同时区的日期,如: 2016年12月26日3:58:16.491476 AM-06:00>2016年12月26日3:58:16.491476 AM+05:00 顺便说一句,我用JPA做这个比较,目的是查找一小时前创建的所有行 我发现我可以使用After关键字来查找它(即findMeasureDateAfter)ISO 8601 首先,如果这些输入实际上是问题中给出的字符串,则尽可能使用标准格式。标准格式对人类来说是直观的,并且更容易被计算机解析。实际上,java
OffsetDateTime
,因为它没有时区指示,只有UTC的偏移量。分区是一个偏移量加上一组处理异常(如夏令时(DST))的规则。时区以大陆/地区
的格式命名,例如美洲/蒙特利尔
不幸的是,java 8中的java.time实现在解析DateTimeFormatter
类中UTC的偏移量时存在一些错误。因此,在Java9之前,这里有一些hack代码需要解析为ZonedDateTime
,并转换为更合适的OffsetDateTime
String input = "12/26/2016 3:58:16.491476 AM -06:00";
DateTimeFormatter f = DateTimeFormatter.ofPattern ( "MM/dd/uuuu h:m:s.SSSSSS a z" , Locale.ENGLISH );
OffsetDateTime odt = ZonedDateTime.parse ( input , f ).toOffsetDateTime ();
odt.toString():2016-12-26T03:58:16.491476-06:00
重复你的结束时刻
如果您的JDBC驱动程序支持JDBC 4.2或更高版本,则可以通过PreparedStatement::setObject
直接传递这些java.time类型
如果不是,则转换为java.sql类型。要转换,请查看添加到旧类的新方法。from
方法采用一个瞬间
,它是UTC时间线上的一个瞬间。您可以将即时
视为去掉其偏移量的OffsetDateTime
。调用OffsetDateTime::toInstant
提取即时
java.sql.Timestamp ts = java.sql.Timestamp.from( odt.toInstant() ) ;
在开始和结束的时候都这样做。将这些java.sql.Timestamp
对象传递给您的PreparedStatement
java.sql.Timestamp ts = java.sql.Timestamp.from( odt.toInstant() ) ;
关于java.time 该框架内置于Java8及更高版本中。这些类取代了麻烦的旧日期时间类,例如,& 该项目现已启动,建议迁移到类 要了解更多信息,请参阅。并搜索堆栈溢出以获得许多示例和解释。规格是 从哪里获得java.time类
- 后来
- 内置的李>
- 标准JavaAPI的一部分,带有捆绑实现
- Java9添加了一些次要功能和修复
- 及
- 大部分java.time功能都在中向后移植到Java6和Java7
-
- 该项目专门为Android采用了ThreeTen Backport(如上所述)
- 看
OffsetDateTime
,因为它没有时区指示,只有UTC的偏移量。分区是一个偏移量加上一组处理异常(如夏令时(DST))的规则。时区以大陆/地区
的格式命名,例如美洲/蒙特利尔
不幸的是,java 8中的java.time实现在解析DateTimeFormatter
类中UTC的偏移量时存在一些错误。因此,在Java9之前,这里有一些hack代码需要解析为ZonedDateTime
,并转换为更合适的OffsetDateTime
String input = "12/26/2016 3:58:16.491476 AM -06:00";
DateTimeFormatter f = DateTimeFormatter.ofPattern ( "MM/dd/uuuu h:m:s.SSSSSS a z" , Locale.ENGLISH );
OffsetDateTime odt = ZonedDateTime.parse ( input , f ).toOffsetDateTime ();
odt.toString():2016-12-26T03:58:16.491476-06:00
重复你的结束时刻
如果您的JDBC驱动程序支持JDBC 4.2或更高版本,则可以通过PreparedStatement::setObject
直接传递这些java.time类型
如果不是,则转换为java.sql类型。要转换,请查看添加到旧类的新方法。from
方法采用一个瞬间
,它是UTC时间线上的一个瞬间。您可以将即时
视为去掉其偏移量的OffsetDateTime
。调用OffsetDateTime::toInstant
提取即时
java.sql.Timestamp ts = java.sql.Timestamp.from( odt.toInstant() ) ;
在开始和结束的时候都这样做。将这些java.sql.Timestamp
对象传递给您的PreparedStatement
java.sql.Timestamp ts = java.sql.Timestamp.from( odt.toInstant() ) ;
关于java.time 该框架内置于Java8及更高版本中。这些类取代了麻烦的旧日期时间类,例如,& 该项目现已启动,建议迁移到类 要了解更多信息,请参阅。并搜索堆栈溢出以获得许多示例和解释。规格是 从哪里获得java.time类
- 后来
- 内置的李>
- 标准JavaAPI的一部分,带有捆绑实现
- Java9添加了一些次要功能和修复
- 及
- 大部分java.time功能都在中向后移植到Java6和Java7
-
- 该项目为Android s采用了Three-Ten Backport(如上所述)