配置单元日期转换不起作用
hive date conversion not working
我正在尝试比较不同格式的两个日期。因此,我将它们都转换为 unixtimespamp 以进行比较,但因为它们具有不同的日期格式。它没有以正确的方式转换。我需要帮助。这是我的查询:
select a.date,b.date
from table1 a join table2 b
on (from_unixtime( unix_timestamp(b.date, 'MM/dd/yyyy HH:mm:ss a')))=(from_unixtime(unix_timestamp(nvl(a.date,'3050-01-01 00:00:00.0'))));
日期格式为:
a.date b.date
4/12/2016 5:46:50 PM 2016-04-12 17:46:50.0
4/12/2016 5:46:50 PM 2016-04-12 17:46:50.0
非常感谢,
堆叠
看来你的约会处理方式倒退了。 a.date
是您需要为其指定格式的那个。 b.date
无需任何准备即可很好地转换为时间戳。以下在我的机器上测试良好:
select a.date,b.date
from table1 a join table2 b
on unix_timestamp(b.date) = unix_timestamp(a.date,'M/d/yyyy h:mm:ss a');
我看到您正在将日期转换为 long int。哪个更准确。那么,为什么不直接比较它们,看看它们是否相等。这是查询:
select a.date,b.date from table1 a join table2 b on (unix_timestamp(b.date, 'MM/dd/yyyy HH:mm:ss a'))=(unix_timestamp(coalesce(a.date,'3050-01-01 00:00:00.0')));
我正在尝试比较不同格式的两个日期。因此,我将它们都转换为 unixtimespamp 以进行比较,但因为它们具有不同的日期格式。它没有以正确的方式转换。我需要帮助。这是我的查询:
select a.date,b.date
from table1 a join table2 b
on (from_unixtime( unix_timestamp(b.date, 'MM/dd/yyyy HH:mm:ss a')))=(from_unixtime(unix_timestamp(nvl(a.date,'3050-01-01 00:00:00.0'))));
日期格式为:
a.date b.date
4/12/2016 5:46:50 PM 2016-04-12 17:46:50.0
4/12/2016 5:46:50 PM 2016-04-12 17:46:50.0
非常感谢, 堆叠
看来你的约会处理方式倒退了。 a.date
是您需要为其指定格式的那个。 b.date
无需任何准备即可很好地转换为时间戳。以下在我的机器上测试良好:
select a.date,b.date
from table1 a join table2 b
on unix_timestamp(b.date) = unix_timestamp(a.date,'M/d/yyyy h:mm:ss a');
我看到您正在将日期转换为 long int。哪个更准确。那么,为什么不直接比较它们,看看它们是否相等。这是查询:
select a.date,b.date from table1 a join table2 b on (unix_timestamp(b.date, 'MM/dd/yyyy HH:mm:ss a'))=(unix_timestamp(coalesce(a.date,'3050-01-01 00:00:00.0')));