配置单元日期函数未正确处理日期

r1wp621o  于 2021-06-25  发布在  Hive
关注(0)|答案(1)|浏览(342)

我有一个日常工作,它根据我使用配置单元日期函数派生的日期来处理负载。直到2天前,它运行良好,问题从2019年12月30日开始。当我使用日期格式时,它显示的是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

还有其他人面临这个问题吗。

cdmah0mi

cdmah0mi1#

看起来你犯了一个典型的错误。
一个常见的错误是使用yyy。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

请确保将当前的\u日期更改为“2019-12-31”,以便进行测试。

相关问题