Hive Date 函数未正确处理日期



我有一个日常工作,根据我使用 hive date 函数派生的日期来处理负载。直到2天前它运行良好,问题从12/30/2019开始。当我使用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

还有其他人遇到过这个问题吗?

看起来你犯了一个人们犯的经典错误。

一个常见的错误是使用 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"。

最新更新