比较不同数据类型的日期

时间:2019-10-10 16:17:20

标签: sql hive

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

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

我尝试将它们都转换为字符串,并转换为日期等。转换的最佳方法是什么,如何更改哪个表的字段,以便比较两个表明它们相等的表。

2 个答案:

答案 0 :(得分:0)

您可以使用from_unixtime(unix_timestamp(<col>, <format>)),所以:

对于'20-MAY-19'

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

对于'20190520'

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

答案 1 :(得分:0)

使用 a_n 函数将数据转换为一种一致的格式,然后在联接条件下使用这些表达式

示例:

From_unixtime and unix_timestamp

1. For dd-MMM-yyformat:

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

Result:

2019-05-20

2. For yyyyMMdd format:

select from_unixtime(unix_timestamp("20190520","yyyyMMdd"),"yyyy-MM-dd");

Result:
相关问题