我有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中实现相同的功能。
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
2条答案
按热度按时间afdcj2ne1#
使用regexp:
根据日期要求编辑正则表达式。
可以使用宏:
然后在sql中使用它:
为了
yyyy-MM-dd
可使用的格式cast(date_col as date)
:wixjitnu2#
假设日期格式为yyyy-mm-dd,即2018-07-20
得到所有的病人
得到所有有效的