一段时间以来,我一直在使用Talend的Context变量;但是,我现在遇到了一个问题,因为我以前从未使用过Date Datatype变量。我在数据库中有一个名为 my_date 的字段,其格式为“ DD-MON-YY” ,并且我创建了一个具有日期数据类型的上下文变量: context.CLOSING_MONTH ,以下是我的查询
select id,due_date
from my_table
where trunc(due_date) < '"+context.CLOSING_MONTH+"'
但是,我遇到了以下错误:
java.sql.SQLDataException:ORA-01858:在期望数字的位置找到了非数字字符
context.CLOSING_MONTH的值是:2019-07-01 00:00:00
奇怪的是,如果我删除上下文变量并放入其确切值(对其进行硬编码),错误就会消失。
非常感谢您的帮助!
答案 0 :(得分:0)
您可以尝试:
where trunc(due_date)<TO_DATE('"+TalendDate.formatDate("dd-MMM-yy", context.CLOSING_MONTH)+"'
比较的两侧日期格式不同:'DD-MON-YY'
和'yyyy-MM-dd HH:mm:ss'
。您甚至需要进行格式化才能使其正常工作。
我对此不太确定,因为问题可能是包含字符的due_date
格式。
在这种情况下,您必须将'due_date'转换为仅包含数字字符的格式:
TO_DATE(to_char(due_date,'DD-MON-YY','NLS_DATE_LANGUAGE = English'),'DD-MON-YY','NLS_DATE_LANGUAGE = English')
让我知道这是否有效。