【问题标题】:Talend Context Variable with Date DataType具有日期数据类型的 Talend 上下文变量
【发布时间】:2019-06-25 05:32:48
【问题描述】:

我使用 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

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

非常感谢您的帮助!

【问题讨论】:

    标签: talend


    【解决方案1】:

    你可以试试:

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

    让我知道这是否有效。

    【讨论】:

    • 您好,感谢您的建议。我尝试了这两个建议,但都抛出了同样的错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-01
    • 1970-01-01
    • 2020-08-12
    • 2017-04-22
    相关资源
    最近更新 更多