【问题标题】:How to reset time part of timestamp to 00:00:00 in Hive?如何在 Hive 中将时间戳的时间部分重置为 00:00:00?
【发布时间】:2020-06-10 15:27:17
【问题描述】:

我是蜂巢新手。

我的一个种子表中有列,比如seed_timestamp。

示例: seed.timestamp = '28/04/2020 12:30:54',从这个时间戳开始,我想创建一个新的时间戳,使得 new_timestamp = '28/04/2020 00:00:00'。

我想在查询的 where 子句中使用这些时间戳,以便检查从午夜到 seed_timestamp 的数据。

【问题讨论】:

    标签: date hive timestamp hiveql where-clause


    【解决方案1】:

    在 Hive 中,您可以使用 to_date() 截断时间戳的时间部分,因此只需:

    to_date(seed_timestamp)
    

    来自the documentation

    to_date(string timestamp):返回时间戳字符串的日期部分

    【讨论】:

    • 是的,但这仍然会导致“28/04/2020”而不是所需的“28/04/2020 00:00:00”
    • @Smug:它返回一个有效的日期字符串(或对象,取决于您的 Hive 版本),您可以使用它与时间戳进行比较 - 这似乎是您想要的。
    • 对不起,如果我不清楚。我实际上是在检查时间戳字段是否位于其他两个时间戳之间。正如我在问题中提到的,我有 '28/04/2020 12:30:54' 但我想从中得出 '28/04/2020 00:00:00' 而不是 '28/04/2020'
    【解决方案2】:

    将日期与' 00:00:00.0'连接起来:

    concat(to_date(seed_timestamp),' 00:00:00.0')
    

    它将生成与时间戳兼容的字符串,您可以进行比较。您也可以将其转换为时间戳:

    cast(concat(to_date(seed_timestamp),' 00:00:00.0') as timestamp)
    

    但没有它也应该可以工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-23
      • 1970-01-01
      • 2015-02-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多