【问题标题】:How to change date format in hive?如何更改 hive 中的日期格式?
【发布时间】:2016-06-01 03:00:38
【问题描述】:

我在 hive 中的表格有一个格式为“2016/06/01”的日期文件。但我发现它与“2016-06-01”的格式不符。 例如,他们无法比较。 它们都是 string 。 所以我想知道如何使它们和谐并可以比较它们。或者另一方面,如何将 '2016/06/01' 更改为 '2016-06-01' 以便他们进行比较。

非常感谢。

【问题讨论】:

  • 一个好的问题包括您尝试解决问题的信息。这个问题没有显示任何研究成果——甚至没有谷歌搜索“更改配置单元中的日期格式”——所以它真的不应该吸引回答者。
  • @Noumenon 你可以提供链接,cloudera.com/documentation/cdh/5-1-x/Impala/…

标签: sql hadoop hive


【解决方案1】:

要将日期字符串从一种格式转换为另一种格式,您必须使用 hive 的两个日期函数

  1. unix_timestamp(string date, string pattern) 转换时间字符串 给定模式到 unix 时间戳(以秒为单位),如果返回 0 失败。
  2. from_unixtime(bigint unixtime[, string format]) 转换 从 unix 纪元 (1970-01-01 00:00:00 UTC) 到 a 表示当前时刻的时间戳的字符串 系统时区。

使用以上两个功能,您可以达到您想要的结果。

示例输入和输出如下图所示:

最后的查询是

select from_unixtime(unix_timestamp('2016/06/01','yyyy/MM/dd'),'yyyy-MM-dd') from table1; 

其中 table1 是我的 hive 数据库中存在的表名。

希望对你有帮助!!!

【讨论】:

  • 如果没有固定日期,但数据库中已经有 20180401 的日期,如何做到这一点?
  • 你只需要写列名而不是固定日期。
  • 以及在您的情况下正确格式为 yyyyMMdd。
【解决方案2】:

假设您的表格中有一个列“birth_day”,采用您的格式, 您应该使用以下查询将birth_day 转换为所需的格式。

date_Format(birth_day, 'yyyy-MM-dd')

您可以通过以下方式在查询中使用它

select * from yourtable
where 
date_Format(birth_day, 'yyyy-MM-dd') = '2019-04-16';

【讨论】:

    【解决方案3】:

    使用:

    unix_timestamp(DATE_COLUMN, string pattern)
    

    上述命令有助于将日期转换为 unix 时间戳格式,您可以使用 Simple Date Function 随意格式化。

    Date Function

    【讨论】:

      【解决方案4】:
      cast(to_date(from_unixtime(unix_timestamp(yourdate , 'MM-dd-yyyy'))) as date)
      

      【讨论】:

      • 请说明您的代码的作用以及它如何解决 OP 的问题。
      【解决方案5】:

      这是我的解决方案(用于字符串到真实日期类型):

      select to_date(replace('2000/01/01', '/', '-')) as dt ;
      

      ps:to_date() 返回日期类型,this feature needs Hive 2.1+; 2.1之前,返回String。

      ps2: hive to_date() 函数或 date_format() 函数,甚至 cast() 函数,不能 strong> regonise 'yyyy/MM/dd' 或 'yyyymmdd' 格式,我觉得这很可悲,让我有点疯狂。

      【讨论】:

        猜你喜欢
        • 2015-12-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-11
        • 2018-10-12
        • 2016-03-08
        • 2020-12-17
        相关资源
        最近更新 更多