这与Default JDBC date format when reading date as a string from ResultSet完全相同,但这个问题实际上从未真正回答过;人们只是提供了编写代码的替代方法。
我特别询问是否有人知道指定默认转换格式的位置,以及是否由某个JDBC规范定义,或者只留下单个JDBC驱动程序。如果是后者,那么另外一个问题是Oracle 10g JDBC如何做到这一点?
**新增15月1日:
抱歉,我认为这个问题非常明确,但显然不是。我不是试图从数据库中检索日期值,也不需要建议如何做到这一点。
我认为这不是引用问题的重复,这就是为什么我在这里问了一个单独的问题。虽然标题几乎相同,但引用的问题(无论OP意图是什么)已经用从数据库中检索日期值的替代方法得到了回答,这不是我想知道的。
干杯,
答案 0 :(得分:1)
好的,所以跟踪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";
因此,我猜测:
我假设这些是因为不同的实现返回不同的格式。当然,仍然可能在JDBC规范中的某处强制使用此格式,并且某些实现不符合要求,但这似乎不太可能。我当然在JDBC规范中找不到任何对此的引用(但这并不意味着它们不在某处!)。
然而,就我而言,关键点是格式在库中是硬编码的,并且不能被任何环境或其他设置覆盖,但只要驱动程序库也不会在系统中更改版本保持不变。
答案 1 :(得分:0)
Oracle 10g JDBC是封闭源代码,所以我想我们永远不会知道:)但我敢打赌它首先要求服务器提供区域设置信息,并根据服务器设置调整它将使用的内部数据格式。我的2c。
答案 2 :(得分:0)
我不是100%确定所有数据库的SQL Date类型的实现。但是从Oracle database的javadoc来看,似乎Oracle DB的DATE
可以很容易地转换为java.sql.Date
。 MySQL和PostgreSQL也是如此:SQL DATE可以转换为java.sql.Date
。