Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.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
如何使用Oracle';使用Java中的时区数据类型标记时间戳_Java_Oracle - Fatal编程技术网

如何使用Oracle';使用Java中的时区数据类型标记时间戳

如何使用Oracle';使用Java中的时区数据类型标记时间戳,java,oracle,Java,Oracle,这个问题分为两个部分 我想知道在实体类中使用TIMEZONE列访问OracleTIMESTAMP的最佳方式是什么。我检查了一下,发现这个DB数据类型映射到Java中的TimeStamp数据类型,但它不存储时区信息 问题是数据库没有将数据保存为2017-08-10 10:30:20.15-07:00,这就是我希望保存数据的方式,它正在将数据转换为服务器的时区并保存值。我是否必须关闭一些设置才能使DB按我想要的方式工作 因此,我最初的想法是使用ZonedDateTime数据类型,因为它可以以我想要的

这个问题分为两个部分

  • 我想知道在实体类中使用
    TIMEZONE
    列访问Oracle
    TIMESTAMP
    的最佳方式是什么。我检查了一下,发现这个DB数据类型映射到Java中的
    TimeStamp
    数据类型,但它不存储时区信息
  • 问题是数据库没有将数据保存为
    2017-08-10 10:30:20.15-07:00
    ,这就是我希望保存数据的方式,它正在将数据转换为服务器的时区并保存值。我是否必须关闭一些设置才能使DB按我想要的方式工作
    因此,我最初的想法是使用
    ZonedDateTime
    数据类型,因为它可以以我想要的格式正确捕获日期,即
    DateTimeFormatter.ISO\u OFFSET\u date\u TIME
    (又称
    yyyy-mm-dd'HH:mm:ss-TZM:TZ
    )。但这并没有映射到DB数据类型,在转换为其他数据类型时,我会丢失时区信息。

    您可以使用java中的SimpleDataFormat来格式化数据库中的输出。在数据库中,您可以将日期存储为字符串,该字符串正好是您想要的内容和方式。另外,您还可以从oracle找到一篇非常好的文章,内容是关于如果您确实需要在databaseOT中使用时间戳,那么如何使用时间戳:有几篇文章是关于这方面的。即使在Java方面,它也很复杂。此外,使用此数据类型可能会节省一些性能影响。IMHO:如果可能,请尽量避免使用此类型,除非确实需要
    OffsetDateTime
    应该根据JDBC 4.2规范工作。不过,我自己还没有尝试过。例如,见。