日期数据类型为

时间:2019-06-25 05:32:48

标签: talend

一段时间以来,我一直在使用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

奇怪的是,如果我删除上下文变量并放入其确切值(对其进行硬编码),错误就会消失。

非常感谢您的帮助!

1 个答案:

答案 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')

让我知道这是否有效。