我尝试连接两个表以进行一些数据验证,并尝试在两个不同类型的日期字段上连接它们。我目前正在使用配置单元,我正在创建两个表,然后将每个文件导入到它自己的表中,因为它来自两个不同的源。我将两个字段类型都指定为字符串。但是,当我从每个表中选择*时,这就是我得到的
t1.asgn_dt = 20-MAY-19 t2.trans_dt = 20190520
我试着把它们都转换成字符串,转换成日期等等。转换的最佳方式是什么?我将更改哪个字段,从哪个表中比较这两个字段,以显示它们是相等的。
nlejzf6q1#
你可以用 from_unixtime(unix_timestamp(<col>, <format>)) ,所以:为了 '20-MAY-19' :
from_unixtime(unix_timestamp(<col>, <format>))
'20-MAY-19'
from_unixtime(unix_timestamp('20-MAY-19' , 'dd-MMM-yy'))
为了 '20190520' :
'20190520'
from_unixtime(unix_timestamp('20190520' , 'yyyy-MM-dd'))
9lowa7mx2#
使用 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-202. For yyyyMMdd format:select from_unixtime(unix_timestamp("20190520","yyyyMMdd"),"yyyy-MM-dd");Result: ```2019-05-20
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");
2条答案
按热度按时间nlejzf6q1#
你可以用
from_unixtime(unix_timestamp(<col>, <format>))
,所以:为了
'20-MAY-19'
:为了
'20190520'
:9lowa7mx2#
使用
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:
```2019-05-20