【问题标题】:Parsing date format to join in hive解析日期格式以加入 hive
【发布时间】:2016-02-02 20:33:15
【问题描述】:

我有一个字符串类型的日期字段,格式为:

03/11/2001

我想将它与另一个列加入,该列采用不同的字符串格式:

1855-05-25 12:00:00.0

如何在 hive 中有效地连接两列,而忽略第二列的时间部分?

我的查询如下所示:

LEFT JOIN tabel1 t1 ON table2.Date=t1.Date

【问题讨论】:

    标签: hadoop hive impala


    【解决方案1】:

    由于您拥有不同格式的日期值,因此您需要使用两者的日期函数,并在连接查询中将其转换为类似格式的日期类型。会是这样的:

    LEFT JOIN tabel1 t1 ON unix_timestamp(table2.Date, 'yyyy-MM-dd HH:mm:ss.S')table2.Date=unix_timestamp(t1.Date,'MM/dd/yyyy')
    

    您可以参考 thisthis 来了解内置日期函数中的配置单元。

    【讨论】:

    • 会忽略时间部分吗?
    • 在这种情况下,没有时间的日期时间将被视为 00:00:00.0
    • Yaa..但我看到我的加入需要很长时间..这是预期的行为吗?
    • 查询日期转换可能需要一些时间。 .如果您有大量数据,可能需要调整和替代方法
    【解决方案2】:

    将日期转换为相同的格式 to_date(table2.date) = to_date(t1.date)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-22
      • 1970-01-01
      • 2021-11-10
      • 1970-01-01
      • 2018-08-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多