gpt4 book ai didi

date - 与Hive中的add_months函数不一致?

转载 作者:行者123 更新时间:2023-12-02 21:09:58 28 4
gpt4 key购买 nike

我潜伏了一段时间,但最后有一个我自己的问题,在这里或在Google上找不到。抱歉,我没上学,只有几年没上课。在使用Hive 1.2时,我遇到了一种情况,好像add_months函数无法正常/始终如一地工作。

简化一下,我基本上有一个包含clientid,yyyy-MM和int的表。

select clientid, concat(yearmonth, '-01'), integer, add_months(concat(yearmonth, '-01'), integer) 
from tablea
where yearmonth = '2015-04' group by clientid, yearmonth, integer;

我使用的是where语句,因为这似乎仅影响4月和11月的日期。发生的事情是我发现:
ClientID1, 2015-04-01, 1, 2015-05-01  
ClientID2, 2015-04-01, 1, 2015-05-01
ClientID3, 2015-04-01, 1, 2015-05-01
ClientID4, 2015-04-01, 1, 2014-04-30
ClientID5, 2015-04-01, 1, 2014-04-30
ClientID6, 2015-04-01, 1, 2014-04-30

add_months如何工作? (apache链接: https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF#LanguageManualUDF-DateFunctions)。另外,如果我包含另一个where语句,其中add_months结果='2014-04-30',则会返回实际显示为'2015-05-01'的行。到底是怎么回事?

如果我表面更改查询(简化查询或使其变得更复杂,但基本上执行相同的操作),则结果有时会更改。任何人都可以尝试复制并让我知道我不仅仅是疯了吗?是否有任何四舍五入或任何可能使我搞砸的东西?

最佳答案

在处理日期时,请使用DATE格式的字段,因此引擎将注意其他事项,例如leap年或月份中的天数(加/减)。

确保您的字段没有空格或特殊字符,我有以下内容,并且效果很好

文件
ClientID1,2015年1月1日
ClientID2,2015-02,1
ClientID3,2015-04,1
ClientID4,2015-04,1
ClientID5,2015年5月1日
ClientID6,2015年6月1日
ClientID7,2015年7月1日
ClientID8,2015-08,1
ClientID9,2015-09,1
ClientID10,2015年10月1日
ClientID11,2015-11,1
ClientID12,2015-12,1

Create table date_nov (client String, datemonth String, x int )  ROW FORMAT     DELIMITED FIELDS TERMINATED BY ",";
LOAD DATA INPATH '/user/root/date_nov.txt' into TABLE date_nov ;

hive> select * from date_nov;
OK
ClientID1 2015-01 1
ClientID2 2015-02 1
ClientID3 2015-04 1
ClientID4 2015-04 1
ClientID5 2015-05 1
ClientID6 2015-06 1
ClientID7 2015-07 1
ClientID8 2015-08 1
ClientID9 2015-09 1
ClientID10 2015-10 1
ClientID11 2015-11 1
ClientID12 2015-12 1

select * , add_months(to_DATE(concat(trim(datemonth),'-01' )),x) from date_nov;

---------------------------------------

关于date - 与Hive中的add_months函数不一致?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40542919/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com