【问题标题】:Timestamp values not inserting sometime in oracle时间戳值未在 oracle 中的某个时间插入
【发布时间】:2014-04-15 21:22:50
【问题描述】:

存储过程中的时间戳值为'30-APR-14 12.00.00.000000 AM'
参数列表:

XXXXX(
   P_CAT_PRG_ID     NUMBER,
   P_CATALOG_ID     NUMBER,
   P_PRG_ELE_ID     NUMBER,
   **P_ELE_CLOSE_DATE TIMESTAMP**,
   -- P_UNIT_PACK      NUMBER,
   P_UNIT_PRICE NUMBER,
   P_CURRENCY   VARCHAR2,
   P_CREATED_BY NUMBER
   ) AS

在“Oracle sql developer”中执行此 sp 时,我将值设为 '03/Apr/14'

该 sp 中的插入查询:

INSERT INTO CCCXXXX
      (CAT_PRG_ID,
       CATALOG_ID,
       PRG_ELE_ID,
       ELE_CLOSE_DATE,
       UNIT_PRICE,
       CURRENCY,
       CREATED_BY,
       CREATED_DATE)
    VALUES
      (0,
       P_CATALOG_ID,
       P_PRG_ELE_ID,
       P_ELE_CLOSE_DATE,
       P_UNIT_PRICE,
       P_CURRENCY,
       P_CREATED_BY,
       SYSTIMESTAMP);

错误:

ORA-01830: 日期格式图片在转换整个输入字符串之前结束

你能帮帮我吗...

【问题讨论】:

  • V_CAT_PRG_ID?不是P_CAT_PRG_ID
  • 值仅为零,跳过某些行以简化。
  • “存储过程中的时间戳值”是什么意思?您究竟是如何调用该程序的?

标签: sql oracle stored-procedures timestamp


【解决方案1】:

插入查询中不存在问题,

IF **TO_TIMESTAMP(V_CAT_STATUS, 'DD-MON-RR HH:MI:SS.FF AM')** <= SYSDATE AND V_IS_PS_CREATED = 1 THEN

UPDATE CATALOG_MASTER SET IS_PS_CREATED = 0 WHERE CATALOG_ID=P_CATALOG_ID;

END IF;

粗体字符串是更改。我错过了 TO_TIMESTAMP,而是使用 TO_DATE

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-21
    • 2011-07-22
    • 1970-01-01
    • 2015-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多