Sql 插入日期数据
我有这张桌子Sql 插入日期数据,sql,oracle,to-char,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(10
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语句无错误,是否有任何建议 我认为您的代码应该可以工作。但是,我会明确列出这些列,并为insert添加日期格式。或许这将有助于:
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\u ACTL\u STLM\u DT
不是日期,比较失败。您完全正确。。。我刚刚检查了POOL_1_13_1C_TRGT的另一个表,它有一个日期数据类型。POOL_1_13_1C_CSS-此数据类型有一个VARCHAR2。非常感谢。