【问题标题】:How can I hardcode date into Oracle query in SSIS如何将日期硬编码到 SSIS 中的 Oracle 查询中
【发布时间】:2020-12-28 23:01:04
【问题描述】:

我对 Oracle 数据库非常陌生,我正在尝试将日期 (2020-06-30 0:00:00) 硬编码到下面的查询中,但是我收到以下错误

[valsys_TIMESERIES_VALUE [37]] 错误:SSIS 错误代码 DTS_E_OLEDBERROR。发生 OLE DB 错误。错误代码:0x80040E14。

一个 OLE DB 记录可用。来源:“OraOLEDB”Hresult:0x80040E14 描述:“ORA-12801:并行查询服务器 P006 中发出错误信号 ORA-01821: 日期格式无法识别

ORA-02063:VALSYS 的前 2 行”。 OLE DB 记录可用。来源:“OraOLEDB”Hresult:0x80004005 描述:“ORA-12801:并行查询服务器 P006 中发出错误信号

ORA-01821: 日期格式无法识别 ORA-02063: 前 2 行来自 VALSYS"。

"SELECT TS_ID,DATE_UTC,VALUE,CASE WHEN VALUE = 0 THEN '0' ELSE TO_CHAR(VALUE) END VALUE_CONV ,SUBSTITUTE_VALUE
,CASE WHEN SUBSTITUTE_VALUE = 0 THEN '0' ELSE TO_CHAR(SUBSTITUTE_VALUE) END SUBSTITUTE_VALUE_CONV ,MANUAL_VALUE, CASE WHEN MANUAL_VALUE = 0 THEN '0' ELSE TO_CHAR(MANUAL_VALUE) END MANUAL_VALUE_CONV,FEASIBLE
,VERIFIED,APPROVED,VALID_FROM,VALID_UNTIL,LAST_EXPORT,DAY_CET,COMPUTED,MARKER,TASK_UNIT_ID FROM  \""+ @[$Project::Oracle_Valsys_Schemaname] + "\".\"VALSYS_TIMESERIES_VALUE\" 
WHERE VALID_FROM >  to_timestamp('"+  @[User::PreLET]  + "', '2020-06-30 0:00:00') "

【问题讨论】:

  • 您可以使用时间戳或日期文字,例如WHERE valid_from > timestamp '2020-06-30 00:00:00'(小时必须为两位数)或WHERE valid_from > date '2020-06-30'。 (如果valid_from 不是日期,而是日期时间,那么我宁愿期望>= 而不是>,以免排除午夜。@[User::PreLET] 包含什么?to_timestamp 应该有日期格式对于第二个参数。例如'yyyy.mm.dd hh24:mi:ss'
  • 请问我该如何投票?非常感谢人......它的工作原理

标签: oracle date timestamp


【解决方案1】:

to_timestamp的第二个参数是一个格式掩码,例如'yyyy-mm-dd hh24:mi:ss'

这是一个示例用法

select 
  to_timestamp('2020-06-30 00:00:00', 'yyyy-mm-dd hh24:mi:ss') tst
from dual;  

TST                          
-----------------------------
30.06.2020 00:00:00,000000000

【讨论】:

    猜你喜欢
    • 2015-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-24
    • 2014-05-20
    • 2014-10-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多