【问题标题】:Hive Date functions not properly handling the datesHive Date 函数无法正确处理日期
【发布时间】:2020-01-01 13:53:19
【问题描述】:

我的日常工作是根据我使用 hive 日期函数得出的日期来处理负载。直到 2 天前它运行良好,问题从 2019 年 12 月 30 日开始。当我使用 date_format 时,它显示年份为 2020 年,否则它显示 2019 年。见下文。

hive> select current_date;
OK
2019-12-31
Time taken: 0.182 seconds, Fetched: 1 row(s)

hive> select date_format(current_date,'dd-MMM-YYYY');
OK
31-Dec-2020
Time taken: 0.429 seconds, Fetched: 1 row(s)

hive> select cast(date_format(date_sub(CURRENT_DATE,1),'YYYYMMdd') AS string);
OK
20201230

有没有其他人遇到过这个问题。

【问题讨论】:

    标签: hive sql-date-functions


    【解决方案1】:

    看起来你陷入了人们常犯的典型错误。

    一个常见的错误是使用 YYYY。 yyyy 指定日历年 而 YYYY 指定 ISO 中使用的年份(“一年中的一周”) 年周日历。在大多数情况下, yyyy 和 YYYY 产生相同的结果 编号,但它们可能不同。通常你应该使用 日历年。

    如下更改您的代码(小写 yyyy)以获得正确的结果:

    hive> select date_format(current_date,'dd-MMM-yyyy');
    OK
    31-Dec-2019
    
    select cast(date_format(date_sub(CURRENT_DATE,1),'yyyyMMdd') AS string);
    OK
    20191230
    

    确保将 CURRENT_DATE 更改为“2019-12-31”以进行测试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-22
      相关资源
      最近更新 更多