Hive 使用配置单元函数验证日期值

Hive 使用配置单元函数验证日期值,hive,Hive,我有一个字符串列,其值为日期。有些有效(yyyy-MM-dd),有些无效。如何仅使用配置单元筛选有效和无效?我不能使用自定义UDF或Spark,因此它只能使用配置单元函数 select * from date_test; +-------------------+--+ | date_test.mydate | +-------------------+--+ | 2018-12-13 | => valid | 2018-13-12 | => inval

我有一个字符串列,其值为日期。有些有效(
yyyy-MM-dd
),有些无效。如何仅使用配置单元筛选有效和无效?我不能使用自定义UDF或Spark,因此它只能使用配置单元函数

select * from date_test;
+-------------------+--+
| date_test.mydate  |
+-------------------+--+
| 2018-12-13        | => valid
| 2018-13-12        | => invalid
| 2018-04-31        | => invalid
+-------------------+--+

select mydate,to_date(mydate) from date_test;
+-------------+-------------+--+
|   mydate    |     _c1     |
+-------------+-------------+--+
| 2018-12-13  | 2018-12-13  |
| 2018-13-12  | 2019-01-12  | => to_date() casts it to valid value
| 2018-04-31  | 2018-05-01  | => to_date() casts it to valid value
+-------------+-------------+--+

我已经设法做到了,但我愿意接受其他更好的方法

//valid date values
select 
   mydate,
   to_date(mydate) 
from 
   date_test
where 
   mydate = to_date(mydate); 

+-------------+-------------+--+
|   mydate    |     _c1     |
+-------------+-------------+--+
| 2018-12-13  | 2018-12-13  |
+-------------+-------------+--+


//invalid date values
select 
   mydate,
   to_date(mydate) 
from 
   date_test
where 
   mydate <> to_date(mydate); 

+-------------+-------------+--+
|   mydate    |     _c1     |
+-------------+-------------+--+
| 2018-13-12  | 2019-01-12  |
| 2018-04-31  | 2018-05-01  |
+-------------+-------------+--+
//有效的日期值
挑选
mydate,
截止日期(mydate)
从…起
日期检验
哪里
mydate=截止日期(mydate);
+-------------+-------------+--+
|mydate | uC1|
+-------------+-------------+--+
| 2018-12-13  | 2018-12-13  |
+-------------+-------------+--+
//无效的日期值
挑选
mydate,
截止日期(mydate)
从…起
日期检验
哪里
mydate至_日期(mydate);
+-------------+-------------+--+
|mydate | uC1|
+-------------+-------------+--+
| 2018-13-12  | 2019-01-12  |
| 2018-04-31  | 2018-05-01  |
+-------------+-------------+--+