在INSERT INTO语句SQL中使用CAST语句

在INSERT INTO语句SQL中使用CAST语句,sql,casting,sql-insert,vertica,Sql,Casting,Sql Insert,Vertica,下面(1)是我编写的查询,当我不使用CAST时,我得到错误(2),当我使用CAST时,它抛出另一个语法错误(3) (一) (2) 执行错误: [Vertica]VJDBC错误:列“\u CELONIS\u CHANGE\u DATE”的类型为timestamptz,但表达式的类型为varchar (3) 执行错误: [Vertica]VJDBC错误:“强制转换”处或附近出现语法错误 为什么在insert table列列表中使用cast语句?无法更改目标表列的类型 您需要更改要插入的值的类型 IN

下面(1)是我编写的查询,当我不使用CAST时,我得到错误(2),当我使用CAST时,它抛出另一个语法错误(3)

(一)

(2) 执行错误:

[Vertica]VJDBC错误:列“\u CELONIS\u CHANGE\u DATE”的类型为timestamptz,但表达式的类型为varchar

(3) 执行错误:

[Vertica]VJDBC错误:“强制转换”处或附近出现语法错误


为什么在insert table列列表中使用cast语句?无法更改目标表列的类型

您需要更改要插入的值的类型

INSERT INTO LFB1_BACKUPTABLE (
        MANDT,LIFNR,BUKRS,PERNR,ERDAT,ERNAM,SPERR,LOEVM,ZUAWA,
        AKONT,BEGRU,VZSKZ,ZWELS,XVERR,ZAHLS,ZTERM,EIKTO,ZSABE,
        KVERM,FDGRV,BUSAB,LNRZE,LNRZB,ZINDT,ZINRT,DATLZ,XDEZV,
        WEBTR,KULTG,REPRF,TOGRU,HBKID,XPORE,QSZNR,QSZDT,QSSKZ,
        BLNKZ,MINDK,ALTKN,ZGRUP,MGRUP,UZAWE,QSREC,QSBGR,QLAND,
        XEDIP,FRGRP,TOGRR,TLFXS,INTAD,XLFZB,GUZTE,GRICD,GRIDT,
        XAUSZ,CERDT,CONFS,UPDAT,UPTIM,NODEL,TLFNS,AVSND,AD_HASH,
        J_SC_SUBCONTYPE,J_SC_COMPDATE,J_SC_OFFSM,J_SC_OFFSR,
        BASIS_PNT,GMVKZK,PREPAY_RELEVANT,ASSIGN_TEST, _CELONIS_CHANGE_DATE
)
SELECT DISTINCT col1, col2, col3, ..., timestamp_col::DATE FROM LFB1
WHERE MANDT||LIFNR||BUKRS NOT IN (SELECT DISTINCT MANDT||LIFNR||BUKRS FROM LFB1_BACKUPTABLE);

您用于强制转换到日期的语法在语法上是正确的,但在本例中,我使用了更常见的Vertica语法,即
col::date
,两者都可以使用。

插入列列表可能只包含列名。也就是说,执行类似于插入t1(col1,col2,col3)的操作,从t2选择colx,coly,cast(d as date)作为日期。你应该使用
WHERE MANDT | | | LIFNR | | BUKRS NOT IN(select DISTINCT MANDT | | | | LIFNR | | | BUKRS
INSERT INTO LFB1_BACKUPTABLE (
        MANDT,LIFNR,BUKRS,PERNR,ERDAT,ERNAM,SPERR,LOEVM,ZUAWA,
        AKONT,BEGRU,VZSKZ,ZWELS,XVERR,ZAHLS,ZTERM,EIKTO,ZSABE,
        KVERM,FDGRV,BUSAB,LNRZE,LNRZB,ZINDT,ZINRT,DATLZ,XDEZV,
        WEBTR,KULTG,REPRF,TOGRU,HBKID,XPORE,QSZNR,QSZDT,QSSKZ,
        BLNKZ,MINDK,ALTKN,ZGRUP,MGRUP,UZAWE,QSREC,QSBGR,QLAND,
        XEDIP,FRGRP,TOGRR,TLFXS,INTAD,XLFZB,GUZTE,GRICD,GRIDT,
        XAUSZ,CERDT,CONFS,UPDAT,UPTIM,NODEL,TLFNS,AVSND,AD_HASH,
        J_SC_SUBCONTYPE,J_SC_COMPDATE,J_SC_OFFSM,J_SC_OFFSR,
        BASIS_PNT,GMVKZK,PREPAY_RELEVANT,ASSIGN_TEST, _CELONIS_CHANGE_DATE
)
SELECT DISTINCT col1, col2, col3, ..., timestamp_col::DATE FROM LFB1
WHERE MANDT||LIFNR||BUKRS NOT IN (SELECT DISTINCT MANDT||LIFNR||BUKRS FROM LFB1_BACKUPTABLE);