在配置单元中验证日期是否有效?

wribegjk  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(361)

我有yyyymmdd格式的日期列。我想检查一下日期是否有效。在informatica中,该函数可用作 CASE WHEN IS_DATE(TO_CHAR(DT),'YYYYMMDD') = 0 THEN TO_DATE('99991231','YYYYMMDD') ELSE TO_DATE(TO_CHAR(DT),'YYYYMMDD') END AS EFF_DT 由于在hive中替代'is\u date'功能不可用,如何在hive中实现相同的功能。

afdcj2ne

afdcj2ne1#

使用regexp:

case when regexp_extract(date_column,'(19|20)[0-9]{2}(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])',0) = '' 
     then 'not valid date' 
     else 'valid date' 
end

根据日期要求编辑正则表达式。
可以使用宏:

create temporary macro isDate(s string)
case when regexp_extract(s,'(19|20)[0-9]{2}(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])',0) = '' 
         then false 
         else true 
    end;

然后在sql中使用它:

select * from table where isDate(date_col);

为了 yyyy-MM-dd 可使用的格式 cast(date_col as date) :

create temporary macro isDate(s string)
case cast(s as date) is not null then true else false end
wixjitnu

wixjitnu2#

假设日期格式为yyyy-mm-dd,即2018-07-20
得到所有的病人

Select required_column_name from table_name where cast(date_column_name as date) is NULL;

得到所有有效的

Select required_column_name from table_name where cast(date_column_name as date) is not NULL;

相关问题