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

Hive 配置单元日期函数未正确处理日期,hive,sql-date-functions,Hive,Sql Date Functions,我有一个日常工作,它根据使用配置单元日期函数派生的日期处理负载。直到2天前,它运行良好,问题从2019年12月30日开始。当我使用date_格式时,它显示的是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'); O

我有一个日常工作,它根据使用配置单元日期函数派生的日期处理负载。直到2天前,它运行良好,问题从2019年12月30日开始。当我使用date_格式时,它显示的是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
为了测试目的,请确保将当前_日期更改为“2019-12-31”