hive 日期YYYY显示异常总结
总结下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]
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号