【问题标题】:Inserting a Date data插入日期数据
【发布时间】:2016-09-16 00:42:00
【问题描述】:

所以我有这张桌子

RPG_RETCON (
    UNIQUE_ID      VARCHAR2(100 BYTE),
    CONTAINER       VARCHAR2(100 BYTE),
    DATA_POINT_NAME VARCHAR2(100 BYTE),
    SOURCE_VALUE    VARCHAR2(100 BYTE),
    CSS_VALUE       VARCHAR2(100 BYTE),
    STATUS          VARCHAR2(100 BYTE)
)

我正在尝试将此 select 语句插入到该表中。

INSERT INTO RPG_RETCON
    (SELECT A.POOL_CUSIP_ID AS UNIQUE_ID,
                 '1_13_1C' AS CONTAINER,
                 'SECU_ACTL_STLM_DT' AS COLUMN_NAME1,
             TO_CHAR(A.SECU_ACTL_STLM_DT),
               TO_CHAR(B.SECU_ACTL_STLM_DT),
                 CASE
                    WHEN A.SECU_ACTL_STLM_DT = B.SECU_ACTL_STLM_DT
                    THEN
                       'PASS'
                    ELSE
                       'FAIL'
                 END
                    AS STATUS
            FROM POOL_1_13_1C_TRGT A
          LEFT JOIN POOL_1_13_1C_CSS B ON A.POOL_CUSIP_ID = B.POOL_CUSIP_ID);

现在的问题是 SECU_ACTL_STLM_DT 是一个日期字段,当我尝试进行插入时,我收到一个无效数字错误。如果我把 TO_CHAR 拿走只是 A.SECU_ACTL_STLM_DT, B.SECU_ACTL_STLM_DT, 我得到无效的月份。

注意:我绝对不能改变

SOURCE_VALUE    VARCHAR2(100 BYTE)
CSS_VALUE       VARCHAR2(100 BYTE)

-- 在表结构内... 它们需要是 VARCHAR2 数据类型。

有什么建议可以在哪里插入这个选择语句而不会出错?

【问题讨论】:

    标签: sql oracle to-char


    【解决方案1】:

    我认为您的代码应该可以工作。但是,我会明确列出列并为插入添加日期格式。也许这会有所帮助:

    INSERT INTO RPG_RETCON(UNIQUE_ID, CONTAINER, COLUMN_NAME1, SOURCE_VALUE, CSS_VALUE, STATUS)
        SELECT A.POOL_CUSIP_ID AS UNIQUE_ID, '1_13_1C' AS CONTAINER,
               'SECU_ACTL_STLM_DT' AS COLUMN_NAME1,
               TO_CHAR(A.SECU_ACTL_STLM_DT, 'YYYY-MM-DD'),
               TO_CHAR(B.SECU_ACTL_STLM_DT, 'YYYY-MM-DD'),
               (CASE WHEN A.SECU_ACTL_STLM_DT = B.SECU_ACTL_STLM_DT
                     THEN 'PASS'
                     ELSE 'FAIL'
                END) AS STATUS
        FROM POOL_1_13_1C_TRGT A LEFT JOIN
             POOL_1_13_1C_CSS B
             ON A.POOL_CUSIP_ID = B.POOL_CUSIP_ID;
    

    SECU_ACTL_STLM_DT 列之一可能不是日期并且比较失败。

    【讨论】:

    • 你是绝对正确的......我刚刚检查了 POOL_1_13_1C_TRGT 的另一个表 - 具有 DATE 数据类型。 POOL_1_13_1C_CSS - 具有此数据类型的 VARCHAR2。谢谢!
    猜你喜欢
    • 2010-11-08
    • 2011-04-06
    • 2016-04-22
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多