JDBC 驱动程序如何处理日期类型?

时间:2021-06-11 13:47:36

标签: java postgresql datetime jdbc

在使用日期类型(主要是时间戳/时间戳)时遇到一些问题后,我意识到我不知道基础知识。

official JDBC driver 如何处理日期类型?

实际发送到数据库的内容是什么?

我假设,如果指定为额外参数,则使用系统语言环境或给定语言环境将日期类型转换为文本表示。 JDBC 查询的结果应该与我使用 PSQL 登录并测试将它们粘贴为文本时得到的结果相同。

JDBC 驱动程序如何处理这些值?我想大多数问题都是由于不知道那部分造成的。我想我非常了解 Java 如何处理日期,以及 PostgreSQL 如何处理日期。问题在于它们之间的JDBC黑匣子。

1 个答案:

答案 0 :(得分:2)

文档 Table 5.1 中提供了 JSR 310 类型到 SQL 类型的映射。

检查 PostgreSQL JDBC Driver PgPreparedStatement.setObject() 方法我们可以看到每个 Java 类型都是用来设置时间戳的,例如:

case Types.TIMESTAMP_WITH_TIMEZONE:
  if (in instanceof java.time.OffsetDateTime) {
    setTimestamp(parameterIndex, (java.time.OffsetDateTime) in);

在内部调用 TimestampUtils.toString() 将日期时间转换为字符串。

相关问题