gpt4 book ai didi

java - getString ("daterow") 返回从 10g 到 11g 的不同格式

转载 作者:行者123 更新时间:2023-11-30 11:53:07 24 4
gpt4 key购买 nike

我有一个大型遗留应用程序调用 resultSet.getString(column),它调用的列是 Oracle 中的 DATE 格式。此代码适用于 Oracle 10g 客户端。它将返回以下内容:

'2008-05-19 10:03:56.0'

但是,当我使用 Oracle 11g 客户端(服务器未更改)时,它给出以下内容:

'2008-05-19 10:03:56'

现在,我知道解决此问题的正确方法是将代码更改为不将 getString 用于日期函数,但这是大量代码,我们正在尝试在无需更改代码的情况下执行此操作。

是否有任何配置参数可用于在 Oracle 客户端修复此问题?

我试过以下方法,它甚至没有改变格式:

Statement stmt = conn.createStatement();
stmt.execute("alter session set nls_date_format = 'YYYY-MM-DD HH24:MI'");

这个取消了秒数,但是在运行查询时它仍然使用有秒数的那个。所以我认为 NSL_DATE_FORMAT 更新不会起作用。

最佳答案

下面的线程似乎表明日期格式在 jdbc 驱动程序中是硬编码的:

Java: ResultSet getString() differs between environments

如果这是真的,那么唯一的解决方案似乎是:

  1. 更改所有代码以使用 getDate()

  2. 将所有查询更改为使用 to_char(date, 'YYYY-MM-DD HH24:MI:SS.F')

有没有人看到任何其他解决方案?

关于java - getString ("daterow") 返回从 10g 到 11g 的不同格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6495660/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com