【问题标题】:sysdate-1 not working in Oracle Jobssysdate-1 在 Oracle Jobs 中不起作用
【发布时间】:2017-03-01 22:27:08
【问题描述】:

我在 Oracle 中有一个存储过程。我想在 Oracle 的 JOBS 中调用它。

DECLARE 
  P_DATE   DATE;
  BEGIN    

  P_DATE := TO_DATE ('19/10/2016', 'DD/MM/YYYY');

  MITRA.PENJUALAN_ANTAR_CABANG.REPORTKONSOLRK ( P_DATE );
  COMMIT; 
END;

当我将 P_DATE 执行为 '19/10/2016' 时,结果是正确的。但是当我在下面这样改变它时,结果不会显示。

DECLARE
   P_DATE   DATE;
BEGIN
   P_DATE := TO_DATE (TRUNC (SYSDATE - 1), 'DD/MM/YYYY');

   MITRA.PENJUALAN_ANTAR_CABANG.REPORTKONSOLRK (P_DATE);
   COMMIT;
END;

我的查询错误是什么,而如果我运行select trunc(SYSDATE-1) from dual,日期是正确的。

【问题讨论】:

  • 当您使用TRUNC (SYSDATE - 1) 时究竟会发生什么?
  • 结果是 10/19/2016。但是当我把它放在 P_DATE := TO_DATE (TRUNC (SYSDATE - 1), 'DD/MM/YYYY');不工作
  • 从不,永远不要在 DATE 值上调用 to_date()。只是不要

标签: sql oracle date plsql


【解决方案1】:

SYSDATE - 1 已经是date。将其传递给to_date 将产生语法错误。只需放弃to_date 电话,您应该会没事的:

P_DATE := TRUNC(SYSDATE - 1);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-20
    • 1970-01-01
    • 1970-01-01
    • 2021-12-14
    • 2020-07-08
    • 1970-01-01
    • 2013-07-29
    • 2017-12-21
    相关资源
    最近更新 更多