【问题标题】:how to converting string date in 'yyyy-m-dd' to 'yyyy-mm-dd' in Hive query?如何在 Hive 查询中将“yyyy-m-dd”中的字符串日期转换为“yyyy-mm-dd”?
【发布时间】:2021-12-01 11:53:41
【问题描述】:

我上下搜索,但找不到任何有用的东西。

我有一个日期以这种格式存储为字符串:'2021-9-01',因此月份列中没有前导零。这是尝试选择最大日期时的问题,因为它会将 9 月解释为大于 10 月。

任何时候我运行一些试图转换它的东西,它实际上永远不会完成。选择 * from... 时我可以拉回 1 行,但这无法完成:

  select unix_timestamp(bad_date, 'yyyy-m-dd') from mytable

我正在使用 hive 查询,因此不确定如何进行此转换,以便我实际上可以让 10 月(本月)显示为最大日期?

【问题讨论】:

    标签: date hive timestamp hql unix-timestamp


    【解决方案1】:

    月份的正确模式是MMmm 是分钟。

    from_unixtime(unix_timestamp(bad_date, 'yyyy-M-dd'),'yyyy-MM-dd')
    

    另一种方法是用lpad进行拆分和连接:

    select concat_ws('-',splitted[0], lpad(splitted[1],2,0),splitted[2])
    from
    (
    select split('2021-9-01','-') splitted
    )s
    

    结果:

    2021-09-01
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-05
      • 1970-01-01
      • 2018-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多