hive:如何使用日期间条件进行连接?

vcirk6k6  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(395)

我有一个项目表:

| id | dateTimeUTC      | color | 
+----+------------------+-------+
| 1  | 1/1/2001 1:11:11 | Red   | 
+----+------------------+-------+
| 2  | 2/2/2002 2:22:22 | Blue  |
+----+------------------+-------+

它包含一些带有日期时间的事件。我还有一个事件表:

| eventID | startDate         | endDate          |
+---------+-------------------+------------------+
| 1       | 1/1/2001 1:11:11  | 2/2/2002 2:22:22 |
+---------+-------------------+------------------+
| 2       | 3/3/2003 00:00:00 | 3/3/2003 1:11:11 |
+---------+-------------------+------------------+

我想将两者结合起来,得到item表的datetimeutc在events表的开始日期和结束日期之间的位置。现在,在sql中实现这一点是相当标准的,但hql就不那么标准了。hive只允许在join子句中使用“=”(此处链接到配置单元信息:https://cwiki.apache.org/confluence/display/hive/languagemanual+joins). 现在,有一个关于类似情况的问题在这里之前,但我发现这是4年以来,并希望有一个解决办法。
关于如何做到这一点有什么建议吗?

qlvxas9a

qlvxas9a1#

我想你有表格中日期的字符串格式,如果是,请使用以下。。。将日期转换成标准格式。

select  * from  items_x, items_date where  UNIX_TIMESTAMP(dateTimeUTC,'dd/MM/yyyy HH:MM:SS')  between UNIX_TIMESTAMP(startDate,'DD/MM/YYYY HH:MM:SS') and   UNIX_TIMESTAMP(endDate,'DD/MM/YYYY HH:MM:SS') ;

相关问题