You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Hive date_format函数2021年12月25日后年份跳变问题咨询

Hive date_format年份跳变问题原因及解决方案

该现象不属于本地实例异常,是日期格式符规则导致的共性问题,所有遵循Java日期格式化逻辑的SQL引擎(Hive、Spark SQL等)都存在该规则。

  • 核心原因:你使用了大写的YYYY作为年份格式符,它代表的是周年(Week-based Year),遵循ISO 8601标准,定义为当前日期所在周对应的年份:只要某一周的天数有≥4天属于下一年,整周的日期用YYYY格式化都会显示下一年的年份。2021年12月26日所在的周有4天以上属于2022年,因此格式化后年份跳变为2022。
  • 正确用法:如果要获取常规的日历年,使用小写的yyyy作为年份格式符即可。

修正后的测试SQL如下:

Select date_format('2021-12-25','yyyy-MM-dd') as Correct2021
        ,date_format('2021-12-26','yyyy-MM-dd') as Correct2021_2
        ,date_format(date_add(current_date,51),'yyyy-MM-dd') as Correct2021b
        ,date_format(date_add(current_date,52),'yyyy-MM-dd') as Correct2021b_2

修正后返回结果符合预期:

correct2021correct2021_2correct2021bcorrect2021b_2
2021-12-252021-12-262021-12-252021-12-26

补充注意:仅在按周统计的业务场景(如周度报表、周环比计算)下才需要使用YYYY格式符,其他日常日期格式化场景统一使用yyyy即可避免该类问题。

内容的提问来源于stack exchange,提问作者Urza5589

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 23:27:07