有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

请求验证数据库和Java如何存储和处理时区?

对于这个极其基本的问题,我深表歉意,我想我知道答案,但我想核实一下:

当提到时区以及它们通常如何存储在数据库和java中时。util。日期:

  • 在数据库中保存日期字段时,它与时区无关(例如,总是以UTC格式保存)
  • 当使用Java日期对象时,日期也是时区不可知的
  • 仅当格式化和解析日期(DB和Java)时,时区才受影响
  • 如果使用Java,它将使用JVM用户。设置/分析日期的时区
  • 如果在Windows上使用Java,Java将自动从区域设置中获取此信息
  • 数据库时区(及其机器的时区)与Java JDBC客户机无关
  • 数据库服务器的时区仅与直接SQL解析和格式化相关

我的问题是:

  1. 以上所有假设都正确吗?有些是?都是不诚实的吗
  2. 是否有参考/官方来源可以更“正式”地验证这一点

共 (1) 个答案

  1. # 1 楼答案

    对于Java来说,这种假设基本上是正确的。对于数据库来说,它们不一定是正确的,因为存在一些变化

    Java使用日历对象处理时区。爪哇。util。日期对象始终包含UTC值

    数据库通常在写入日期和时间戳时存储和返回日期和时间戳(带有小时、分钟等),而不考虑存储所使用的内部格式。如果存储2010-12-25,则无论客户端或服务器的时区如何,都将检索相同的值

    有些数据库具有TIMESTAMP WITH TIMEZONE数据类型,它分别存储时间戳和时区

    日期和时间戳在Java和数据库之间转换,通常以Java子类。util。使用的日期在JDBC客户端的时区中进行解释