在 VARCHAR 列中以一种格式一致地存储日期

问题描述 投票:0回答:1

我正在使用 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())

java oracle-database plsql oaf
1个回答
0
投票

您的查询有 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;
© www.soinside.com 2019 - 2024. All rights reserved.