gpt4 book ai didi

java - 在应该是数字的地方发现了非数字字符

转载 作者:行者123 更新时间:2023-12-02 09:40:05 27 4
gpt4 key购买 nike

我收到错误为

ORA-01858: a non-numeric character was found where a numeric was expected

对于 Eclipse 中的查询,但相同的查询在 Toad 中运行良好。

我尝试将日期更改为 to_char

String query3 = "SELECT TXN_DATETIME FROM S3_ANTI_MONEY_LAUNDERING_TDS WHERE TRUNC(ROW_LOADED_DATE_TIME)='30-OCT-2018' AND SRC_FEED_NUM='63' AND BANK_ID IN('ISPP') AND SRC_RECORD_NUM IN('3','6')";

statement = connection.createStatement();
rs3 = statement.executeQuery(query3);

ArrayList<String> resultList1 = new ArrayList<String>();
while (rs3.next()) {
String result = rs3.getString(1) ;
resultList1.add(result);

最佳答案

问题可能出在您指定日期的方式上。

如果您没有提供正确的日期文字,则 Oracle 将使用您的 NLS_DATE_FORMAT 进行从文本到日期的隐式转换,这可能不是您所期望的。

替换这个:

String query3 = "SELECT TXN_DATETIME FROM S3_ANTI_MONEY_LAUNDERING_TDS WHERE TRUNC(ROW_LOADED_DATE_TIME)='30-OCT-2018' AND SRC_FEED_NUM='63' AND BANK_ID IN('ISPP') AND SRC_RECORD_NUM IN('3','6')";

这样:

String query3 = "SELECT TXN_DATETIME FROM S3_ANTI_MONEY_LAUNDERING_TDS WHERE TRUNC(ROW_LOADED_DATE_TIME) = DATE '2018-10-30' AND SRC_FEED_NUM='63' AND BANK_ID IN('ISPP') AND SRC_RECORD_NUM IN('3','6')";

在 Oracle 中执行 DATE 文字的正确方法是以下之一:

日期“yyyy-mm-dd”

时间戳“yyyy-mm-dd hh24:mi:ss”

当然,您可以在此语法中使用任何您想要的掩码:

TO_DATE('2018-10-30 00:00:00', 'YYYY-MM-DD HH24:MI:SS')

Oracle docs for NLS_DATE_FORMAT

Oracle docs for DATE and DATETIME literals

最后,如果您的代码正在动态构建该查询,那么最好使用绑定(bind)变量和准备好的语句。只需确保您熟悉 Java 日期和时间戳与 Oracle 日期和时间戳的细微差别即可。

关于java - 在应该是数字的地方发现了非数字字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57149802/

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