Date Hadoop Impala:将数据类型整数格式化为日期/时间戳以使用addtime函数

Date Hadoop Impala:将数据类型整数格式化为日期/时间戳以使用addtime函数,date,hadoop,timestamp,type-conversion,impala,Date,Hadoop,Timestamp,Type Conversion,Impala,我在黑斑羚工作,有以下表格: customer_id | day_id | return_day_id ABC 20170830 20170923 BCD 20170830 20170901 不幸的是,day_id和return_day_id字段都是INT而不是date 如何将其数据类型更改为date,以便在day_id之后的4天内仅使用return_day_id计算不同的客户_id。是否需要将其转换为date,然后转换为timesta

我在黑斑羚工作,有以下表格:

customer_id | day_id    | return_day_id
ABC           20170830    20170923
BCD           20170830    20170901
不幸的是,day_id和return_day_id字段都是INT而不是date


如何将其数据类型更改为date,以便在day_id之后的4天内仅使用return_day_id计算不同的客户_id。是否需要将其转换为date,然后转换为timestamp,以便使用adddate函数

其中一条评论正确地指出,您需要使用
unix\u timestamp
from\u unixtime
,但不需要使用cast。关于stackoverflow的许多其他问题都遇到了类似的问题,每个问题都试图使用cast,但在许多情况下,结果都返回空值或不起作用

下面应该以YYYY-MM-dd格式为您提供所需的时间对象,您还可以选择将hh-MM ss添加到该时间对象中

SELECT TBL.day_id, from_unixtime(unix_timestamp(cast (TBL.day_id as string), "yyyyMMdd"))

FROM yourTable as TBL

LIMIT 10 
需要注意的一点是,这会将字符串转换为日期,因此我们在
cast(TBL.day\u id as string),“yyyyMMdd”)

示例:

20160220->2016-02-20 00:00:00

您可以在文档中找到更多信息

希望有帮助,
Julian

使用unix时间戳和unixtime时间戳的组合,并将结果转换为时间戳,以使用日期添加功能。@Philantrover谢谢你-我对Impala很陌生,你介意举一个例子说明你是如何做的吗?这样我也可以投票/接受它。非常感谢你