Spark SQL中date_format函数使用MMMM YYYY格式返回值不准确问题
问题根因
这个异常是日期格式符使用错误导致的,和year()函数逻辑没有冲突:
date_format中你使用的YYYY是周纪年(week-based year),取值规则是将日期所在的周归属到对应年份:如果某一天属于下一年的第一周,就会返回下一年的年份。2020年12月底的日期刚好归属到2021年的第一周,因此返回2021。- 你预期的公历年对应的格式符是
yyyy,和year()函数的计算逻辑完全一致。
修复方法
将原格式化逻辑中的格式符替换即可:
原写法:date_format(last_order_date,'MMMM YYYY')
修改为:date_format(last_order_date,'MMMM yyyy')
验证参考
以2020-12-31为例:
原写法返回结果:
December 2021
修改后返回结果:December 2020year('2020-12-31')返回结果:2020
修改后结果和year()函数取值完全匹配,符合预期。
内容的提问来源于stack exchange,提问作者layal
相关产品推荐
相关产品推荐

