插入日期数据

时间:2016-09-16 00:42:00

标签: sql oracle to-char

所以我有这张桌子

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数据类型。

有什么建议我可以在哪里插入这个select语句错误吗?

1 个答案:

答案 0 :(得分: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列可能不是日期,而且比较失败。