我正在使用 Oracle EBS 中的 OAF 扩展。我们有 Oracle 提供的属性列(varchar 数据类型),我们可以在其中存储附加数据。我们需要存储用户输入的两个日期字段。
在 OAF Java 页面中,当用户从日历选择中选择日期并点击保存时,它会以 YYYY-MM-DD 格式存储在数据库表中。例如2022-05-22
但是在检索时,我需要将其显示为 MM/DD/YYYY,以在 OAF 页面中显示对齐的日期。这里的问题是,下次(第二次以后)当我们尝试保存(不是通过再次选择日历,因为日期已填充在视图中)时,它会以 MM/DD/YYYY 格式保存。从那时起,下面的视图查询就会失败。
从双中选择 TO_CHAR(TO_DATE(2022-05-22, 'YYYY/MM/DD'),'MM/DD/YYYY');
有没有一种方法可以让我始终强制在 JAVA 代码或正在调用的 PL/SQL 包中将值存储为 MM/DD/YYYY 。我基本上是在 JAVA 中检索字段值并调用 PL/SQL 过程来更新表中的值。
DBUtil.setString((OraclePreparedStatement)oracleCallableStatement, b1++,busClassVORowImpl.getAttribute1()) DBUtil.setString((OraclePreparedStatement)oracleCallableStatement,b1++,busClassVORowImpl.getAttribute2())
您的查询有 2 个问题。
第1期;
您最初将日期存储为 varchar,格式如下:
YYYY-MM-DD
YYYY/MM/DD
的 varchar。
问题2;
为了将 varchar 文本数据读取为 varchar,您需要将其放在引号中。
由于没有引号,您将在 TO_DATE() 函数调用本身中收到错误。
以下查询每次根据您的用例都有效!
select TO_CHAR(TO_DATE('2022-05-22', 'YYYY-MM-DD'),'MM/DD/YYYY') from dual;