这与以下问题完全相同从 ResultSet 中以字符串形式读取日期时的默认 JDBC 日期格式,但这个问题从未得到真正的回答;人们只是提供了编写代码的替代方法。
我特别询问是否有人知道默认转换格式是在哪里指定的,以及它是否由 JDBC 规范在某处定义,或者只是由各个 JDBC 驱动程序决定。如果是后者,那么还有一个问题:Oracle 10g JDBC 如何做到这一点?
** 1 月 15 日添加:
抱歉,我认为这个问题已经足够清楚了,但显然不是。我并不是试图从数据库中检索日期值,并且不需要有关执行此操作的方法的建议。
我不认为这与引用的问题重复,这就是为什么我在这里提出一个单独的问题。虽然标题几乎相同,但所引用的问题(无论OP的意图是什么)已经用从数据库检索日期值的替代方法得到了回答,这不是我想知道的。
Cheers,
好吧,跟踪 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 规范中的某处强制规定的,并且某些实现是不符合要求的,但这似乎不太可能。我当然在 JDBC 规范中找不到对此的任何引用(但这并不意味着它们不存在于某处!)。
然而,就我而言,关键点是该格式是硬编码在库中的,并且不能被任何环境或其他设置覆盖,而且只要驱动程序库版本保持不变,也不会跨系统更改相同的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)