gpt4 book ai didi

oracle11g - 从返回的 Oracle 时间戳列中检索数据

转载 作者:行者123 更新时间:2023-12-03 14:51:12 25 4
gpt4 key购买 nike

我们有一个使用 Oracle 时间戳的 ColdFusion 8 (Linux) 应用程序。我们刚刚从 10g 转换到 Oracle 11g,我们现在在数据源上使用 Oracle 的瘦客户端。我们在选择时间戳列的应用程序中遇到错误。
似乎是类 oracle.sql.TIMESTAMP 的对象正在被退回。我通过转储列的内容来验证这一点。果然,它让我分解了对象的方法及其返回类型。但是,我似乎无法直接与这个对象交互:

<cfquery name="getstuff" ...>
SELECT timestampfld ...
FROM myTable
</cfquery>
getstuff.timestampfld包含一个对象。但是,这样做:
<cfoutput query="getstuff">
#timestampfld.stringValue()#
#timestampfld.dateValue()#
</cfoutput>
产生错误,指出无法找到这些方法。如何获取该对象中保存的数据?
评论更新:
当我取列值并应用 DateFormat( timestampfld, "dd.mm.yyyy" ) 时对它起作用。 CF 错误是
"The value class oracle.sql.timestamp cannot be converted to a date".
当我表演时 <cfoutput> ,我得到了类定义。
在检索到的列中,我似乎得到了一个对象而不是一个字符串。当我 cfdump 列时,我得到 OBJECT OF oracle.sql.TIMESTAMP。转储列出了可用的方法和字段。当我 cfoutput 相同的变量时,会显示一个字符串。当我尝试执行 DataFormat() 时在变量上,它提示它不是日期。

最佳答案

我只是在开发过程中偶然发现了这个错误。我在过去有过,从那时起就被遗忘了。
我知道两种缓解方法:
第一个是根据 answer关于不同上下文中相同错误消息的问题。
可以将以下内容添加到 jvm.config文件

-Doracle.jdbc.J2EE13Compliant=true
第二个不是返回一个 Oracle TIMESTAMP 列而是 CAST 它做 DATE,首先,像
<cfquery name="getstuff" ...>
SELECT CAST( timestampfld as DATE ) timestampfld
FROM myTable
</cfquery>
老实说,我对两者都不满意。当忘记 JVM 参数时,软件会崩溃。另一方面,CAST 可能会影响 SQL 的工作方式。

关于oracle11g - 从返回的 Oracle 时间戳列中检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20850545/

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