date - Hadoop 黑斑羚 : Format datatype integer to date/timestamp to use addtime function

标签 date hadoop timestamp type-conversion impala

我正在 Impala 中使用下表:

customer_id | day_id    | return_day_id
ABC           20170830    20170923
BCD           20170830    20170901

不幸的是,day_id 和 return_day_id 字段都是 INT 而不是日期。

如何将其数据类型更改为日期,以便我可以在 day_id 之后的 4 天内仅使用 return_day_id 来计算不同的 customer_ids。我是否需要将其转换为日期,然后转换为时间戳,以便我可以使用 adddate 函数?

最佳答案

哪一条评论正确指出,您需要使用 unix_timestampfrom_unixtime ,但是您不需要使用强制转换。 stackoverflow 上的许多其他问题都遇到了类似的问题,每个问题都尝试使用强制转换,但在许多情况下最终返回 NULL 值或不起作用。

下面应该为您提供所需的时间对象,格式为 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_id as string), "yyyyMMdd")) 处的字符串。

示例:

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

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

希望有帮助, 朱利安

关于date - Hadoop 黑斑羚 : Format datatype integer to date/timestamp to use addtime function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46574158/

相关文章:

java - 考虑 AM/PM 计算 Java 中的日期/时间差

perl - 在Hadoop上的Perl中,如何获取映射器正在处理的文件的文件?

hadoop - 如何使用oozie在日期不确定的HDFS中查找数据路径

mysql - 如何获取每月每天的地址数量

sql - 标记个人事件发生后发生的日期

r - 使用[[和向量对数据框进行索引时,日期列将被强制转换为数字

jquery - 使用表单选择日期jquery

json - Hadoop Java MapReduce 用 Ja​​ckson 问题解析 JSON

python - 使用 pandas 数据框计算行数

mysql - SQL 计算两个日期之间有多少条记录并返回该计数