java - 从 JDBC ResultSet 中以字符串形式读取日期时指定的日期格式在哪里

标签 java jdbc

这与 Default JDBC date format when reading date as a string from ResultSet 完全相同,但这个问题从来没有真正回答过;人们只是提供了编写代码的替代方法。

我特别想问是否有人知道默认转换格式的指定位置,以及它是否由某处的 JDBC 规范定义,或者只是留给各个 JDBC 驱动程序。如果是后者,那么另一个问题是 Oracle 10g JDBC 如何做到这一点?

** 添加了 1 月 15 日:

抱歉,我认为问题已经足够清楚了,但显然不是。我不是要从数据库中检索日期值,也不需要有关如何执行此操作的建议。

我不认为这是引用问题的重复,这就是为什么我在这里问了一个单独的问题。虽然标题几乎相同,但引用的问题(不管 OP 的意图是什么)已经用从数据库中检索日期值的替代方法得到了回答,这不是我想知道的。

干杯,

最佳答案

好的,所以通过 JDBC 代码进行跟踪,看起来 Oracle 驱动程序硬编码了它自己的格式:

  int k = (((bytes[0 + j] & 255) - 100) * 100 + (bytes[1 + j] & 255)) - 100;
  String s = k + "-" + toStr(bytes[2 + j])
      + "-" + toStr(bytes[3 + j])
      + " " + toStr(bytes[4 + j] - 1)
      + ":" + toStr(bytes[5 + j] - 1)
      + ":" + toStr(bytes[6 + j] - 1)
      + ".0";

因此,我猜测:

  1. 此行为未在任何 JDBC 规范中指定。
  2. 每个驱动程序库都可以返回它喜欢的任何格式。

我假设这些是因为不同的实现返回不同的格式。当然,这种格式仍然有可能在 JDBC 规范的某个地方被强制要求,并且某些实现不符合规范,但这似乎不太可能。我当然无法在 JDBC 规范中找到对此的任何引用(但这并不意味着它们不在某处!)。

然而,就我而言,关键点是格式在库中是硬编码的,不会被任何环境或其他设置覆盖,而且只要驱动程序库在系统之间也不会改变版本保持不变。

关于java - 从 JDBC ResultSet 中以字符串形式读取日期时指定的日期格式在哪里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21104197/

相关文章:

java - Nifi-1.0.0 和 Crate.IO

java - DB2 JDBC 创建 clob 错误

java - 在eclipse java项目中加载dll文件

java - 如何抛出EmptyResultDataAccessException?

java - 获取类预期错误(nooby)

java - 使用 Sql 中的第一个组合框字符串值填充第二个组合框

java - 更改 JTABLE 中特定单元格的颜色

java - 使用 keytool 生成私钥和公钥文件

java - 添加 JSch 0.1.54 JAR 依赖到 IDE 工件生成

java - 为什么这里需要 "while (rs.next())"?