SQL 类型 TIME WITH TIMEZONE 有意义吗?

The*_*ler 6 sql ansi-sql-92 type-mapping

在将一些数据库列映射到 Java 类时,我偶然发现了这个不起眼的SQL-92 标准类型(据我所知由 PostgreSQL、H2 和 HyperSQL 实现)。我从未使用过它,但我想了解如果我找到它,如何清楚地将它映射到 Java 类型。

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

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

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

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

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

use*_*728 0

由于许多原因,您描述得很好,用一天中的时间和可变时区解释时间点但没有日期实际上是未定义的。不过,在某些用例中,您要在国际背景下制定策略,这将是一种有用的数据类型。每天15:20:01+04:00猫咪需要午睡。现在的目的不是评估隔离的价值,而是将其添加到基准日期。标准都是为了支持理论上的可能性,即使它们不是很常见。