我正在使用Pentaho来数据掩盖oracle DB上的一些信息
我有几种形式的转换: 选择 - >数据掩码 - >根据主键更新行
我有表,其中时间戳是更新步骤中主键的一部分。即使我没有以任何方式屏蔽或更新此字段,我收到错误ORA-01843:执行更新时不是有效月份。
我相信这是因为当Pentaho从步骤1接收时间戳时,它实际上并没有将它作为时间戳保留,直到我尝试更新并因此检查主键。输出到excel,我看到pentaho以格式
给出时间戳2014-07-30 15:44:31.869033欧洲/伦敦(Pentaho)
但在DB中格式为
30-JAN-15 09.21.38.109145000 AM(甲骨文 - 具有当地时区的TIMESTAMP(6))
我尝试在更新步骤之前将pentaho字段转换为时间戳(格式:yyyy-MM-dd HH:mm:ss.SSSSSS),但如果我尝试使用毫秒,则会收到错误。
2017/03/14 13:19:25 - 选择值0 - AUDIT_CREATE_TS时间戳:无法将字符串[2015-01-30 09:21:38.109145欧洲/伦敦]转换为时间戳,期待格式[yyyy -mm-dd hh:mm:ss.ffffff]
2017/03/14 13:19:25 - 选择值.0 - 时间戳格式必须为yyyy-mm-dd hh:mm:ss [.fffffffff]
如果我将我的格式替换为Pentaho建议的格式,我会得到“非法字符'f'”然后我陷入了循环。
忽略毫秒似乎成功但不会给我任何匹配,因为它不够精确并且没有返回db的结果..
任何帮助将不胜感激!
答案 0 :(得分:0)
不确定Pentaho,但如果您正在寻找此字符串的转换:
'2015-01-30 09:21:38.109145 Europe/London'
到Oracle中带有时区的时间戳,它将是:
select to_timestamp_tz('2015-01-30 09:21:38.109145 Europe/London', 'YYYY-MM-DD HH24:MI:SS.FF6 TZR') from dual;
有关更多信息,请参阅Oracle Datetime Format Models文档。