oracle 我的SQL查询在JDBC上不起作用,但在SQL Developer上起作用[已关闭]

fxnxkyjh  于 2023-02-07  发布在  Oracle
关注(0)|答案(1)|浏览(162)

编辑问题以包含desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
3天前关闭。
Improve this question
我尝试连接两个表,因为属性具有不同的数据类型:
TIMESTAMP(6)CHAR(26)
我要把一个转换成另一个。
以下查询是在我的Oracle SQL Developer上工作的查询,但是当我在Java代码中使用JDBC时,我无法获得正确的结果。
1.我将t1.txn_id转换为TIMESTAMP。在Oracle SQL Developer中,它工作正常,但在我的Java应用程序中,连接不起作用,它返回exp_txt null,即使它不是。

SELECT e.exp_txt, t1.*
  FROM tb1 t1
  LEFT JOIN tb2 t2
    ON TO_CHAR(t1.txn_id, 'yyyy-MM-DD-HH24.MI.SS.FF') = t2.txn_id
 WHERE account_num = 201

1.我将t2.txn_id转换为时间戳,即CHAR。在Oracle SQL Developer中,它运行良好,但在Java应用程序中,它会抛出
ORA-01830:日期格式图片在转换整个输入字符串之前结束错误。

SELECT e.exp_txt, t1.*
  FROM tb1 t1
  LEFT JOIN tb2 t2
    ON t1.txn_id = TO_TIMESTAMP(t2.txn_id, 'yyyy-MM-DD HH24:MI:SS.FF')
 WHERE account_num = 201

可能的原因和解决方案是什么?

ajsxfq5m

ajsxfq5m1#

我用CAST解决了这个问题!

SELECT E.EXP_TXT, X.* 
    FROM tb1 X 
    LEFT JOIN tb2 E ON
    X.TXN_ID = CAST(E.TXN_ID as timestamp) 
WHERE ACCOUNT_NUM = 201

感谢:https://www.alibabacloud.com/help/en/maxcompute/latest/convert-data-types-among-string-timestamp-and-datetime#section-qbj-kh7-z4d

相关问题