Sql 比较不同数据类型的日期

Sql 比较不同数据类型的日期,sql,hive,Sql,Hive,我试图连接两个表以进行一些数据验证,并试图在两个不同类型的日期字段上连接它们。我目前正在使用HIVE,我正在创建两个表,然后将每个文件导入到它自己的表中,因为它来自两个不同的源。我将两种字段类型都指定为字符串。然而,当我从每个表中选择*时,这就是我得到的结果 t1.asgn_dt = 20-MAY-19 t2.trans_dt = 20190520 我试着把它们都转换成字符串,转换成日期等等。转换的最佳方式是什么?我将更改哪个字段,从哪个表中比较这两个字段,以显示它们是相等的。您可以使用来自u

我试图连接两个表以进行一些数据验证,并试图在两个不同类型的日期字段上连接它们。我目前正在使用HIVE,我正在创建两个表,然后将每个文件导入到它自己的表中,因为它来自两个不同的源。我将两种字段类型都指定为字符串。然而,当我从每个表中选择*时,这就是我得到的结果

t1.asgn_dt = 20-MAY-19
t2.trans_dt = 20190520

我试着把它们都转换成字符串,转换成日期等等。转换的最佳方式是什么?我将更改哪个字段,从哪个表中比较这两个字段,以显示它们是相等的。

您可以使用来自unixtime(unix\u timestamp(,))的
,因此:

对于“19年5月20日”

from_unixtime(unix_timestamp('20-MAY-19' , 'dd-MMM-yy'))
对于
'20190520'

from_unixtime(unix_timestamp('20190520' , 'yyyy-MM-dd'))

使用来自unixtime和unix\u timestamp的
函数将数据转换为一种一致的格式,然后在连接条件中使用这些表达式

示例:

1。对于dd MMM YY格式:

select from_unixtime(unix_timestamp("20-MAY-19","dd-MMM-yy"),"yyyy-MM-dd");
2019-05-20
select from_unixtime(unix_timestamp("20190520","yyyyMMdd"),"yyyy-MM-dd");
2019-05-20
结果:

select from_unixtime(unix_timestamp("20-MAY-19","dd-MMM-yy"),"yyyy-MM-dd");
2019-05-20
select from_unixtime(unix_timestamp("20190520","yyyyMMdd"),"yyyy-MM-dd");
2019-05-20
2。对于yyyyMMdd格式:

select from_unixtime(unix_timestamp("20-MAY-19","dd-MMM-yy"),"yyyy-MM-dd");
2019-05-20
select from_unixtime(unix_timestamp("20190520","yyyyMMdd"),"yyyy-MM-dd");
2019-05-20
结果:

select from_unixtime(unix_timestamp("20-MAY-19","dd-MMM-yy"),"yyyy-MM-dd");
2019-05-20
select from_unixtime(unix_timestamp("20190520","yyyyMMdd"),"yyyy-MM-dd");
2019-05-20

我尝试了这个,但我得到的只是空白数据
select from_unixtime(unix_timestamp(trans_dt,'yyyyy-mm-dd'))来自表2
我甚至尝试过将from_unix与to_Date函数一起使用,但它将每个月变为一月,并在输入月份为20100305时返回2010-01-05。我尝试过的convert、cast和from_unix time的每个组合都返回空值。