繁体   English   中英

如何在Teradata中添加日期?

[英]how to add date in Teradata?

嗨,我想将01/01/1970添加到列中,last_hit_time_gmt的数据类型为bigint,当我运行以下查询时,我正在获取数据类型

last_hit_gmmt

与定义的数据类型名称不匹配。

   select 
    distinct STG.OMN_APND_KEY,
    STG.last_hit_time_gmt,
    IIF(STG.last_hit_time_gmt  <>0,ADD_TO_DATE(TO_DATE('01/01/1970', 'DD/MM/YYYY'),'SS',cast(STG.last_hit_time_gmt as DATE ),NULL) 
from    EDW_STAGE_CDM_SRC.STG_OMNITUREDATA STG
 WHERE
 UPPER(STG_OMNITUREDATA.EVAR41) IN 
('CONS_SUPP: CONSUMER','STORE','PURCHASE')  and 
STG.OMN_APND_KEY='61855975'

请帮我..

查询和数据类型与Teradata不兼容。

  • 如评论中所述,您可能希望使用“ CASE”代替“ IFF”。 通用格式为
CASE WHEN *condition* THEN *result_if_true*
 ELSE *result_if_false*
END as *ColumnName*

根据评论回复进行编辑

因此,在您的查询示例中,case语句可以像...

select distinct STG.OMN_APND_KEY
     ,STG.last_hit_time_gmt
     ,CASE WHEN STG.last_hit_time_gmt = 0 THEN NULL 
       ELSE DATE '1970-01-01'
      END AS YourColName
    FROM EDW_STAGE_CDM_SRC.STG_OMNITUREDATA STG
    WHERE UPPER(STG_OMNITUREDATA.EVAR41) IN 
    ('CONS_SUPP: CONSUMER','STORE','PURCHASE')  and 
    STG.OMN_APND_KEY='61855975'

另外,如果您只是尝试更新STG.last_hit_time_gmt字段,为什么不只使用两个简单的UPDATE语句?

UPDATE EDW_STAGE_CDM_SRC.STG_OMNITUREDATA 
     SET STG.last_hit_time_gmt = DATE '1970-01-01'
    WHERE STG.last_hit_time_gmt <>  0
     AND UPPER(STG_OMNITUREDATA.EVAR41) IN 
        ('CONS_SUPP: CONSUMER','STORE','PURCHASE')  
     AND STG.OMN_APND_KEY='61855975';

    UPDATE EDW_STAGE_CDM_SRC.STG_OMNITUREDATA 
     SET STG.last_hit_time_gmt = NULL
    WHERE STG.last_hit_time_gmt =  0
     AND UPPER(STG_OMNITUREDATA.EVAR41) IN 
        ('CONS_SUPP: CONSUMER','STORE','PURCHASE')  
     AND STG.OMN_APND_KEY='61855975';

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM