总结下hive y 和 Y 的区别
y/Y | Meaning | 解释 |
---|---|---|
y | year-of-era | 元年,我们平时理解的年;20221231认为是2022年 |
Y | week-based-year | 基于周的年,只要日期那周跨年,都算下一年;2020-12-27周日,这周跨年,认为是2021年 |
问题记录
做数据验证发现数据异常;在执行以下hql在年底的时候会多加一年:
> select date_format('2020-12-31 00:00:00','YYYYMMddHHmmss');
20211231000000
使用不同日期反复排查验证,发现2020年底分界线是26号(周六,一周的结束);20201226之前的都能正常转换,20201227(周一,一周的开始)之后的都会多加1年;
> select date_format('2020-12-26 00:00:00','YYYYMMddHHmmss');
20201226000000
> select date_format('2020-12-27 00:00:00','YYYYMMddHHmmss');
20211227000000
查询hive文档得知YYYY(大写的Y)是基于周的年,指定日期的那周只要跨年了,就会算进下一年;
[https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF]