4

在将一些数据库列映射到 Java 类时,我偶然发现了这种晦涩难懂的SQL-92 标准类型(由 PostgreSQL、H2 和 HyperSQL afaik 实现)。我从未使用过它,但我想了解如果我找到它,它是如何清晰地映射到 Java 类型的。

以下是我可以看到的变体:

  • 案例 ATIME类型,例如15:20:01。这是“当地时间”。时区对应用程序是显而易见的,因此数据库不会记录它。

  • 案例 BTIME带偏移量的,如15:20:01+04:00. 它代表“世界时间”。这个时间可以简单地转换为 UTC 或任何其他世界时钟。

  • 案例 CTIME带有时区的 A,例如15:20:01 EDT. 由于解释时间的规则很大程度上取决于具体的日期,如果没有日期,我就无法真正理解它;但是,如果我添加日期,它就会变成TIMESTAMP,这是完全不同的东西。

那么,SQL 标准是否弄错了?或者也许“带时区的时间”应该始终解释为“带偏移的时间”(案例 B)?

4

0 回答 0