在24小时内蜂巢计算日期

时间:2018-07-19 18:00:57

标签: datetime bigdata hiveql hue

我的需求真的很愚蠢,所以基本上我需要在Hive的时间戳列中回到24小时。

到目前为止,我已经尝试了两种不同的方法,但是并没有通过:

 select 
 recordDate, --original date
 cast(date_sub(cast(recorddate as timestamp),1) as timestamp),  -- going one day behind without hour
cast((cast(cast(recorddate as timestamp) AS bigint)-1*3600) as timestamp)  -- crazy year
 from mtmbuckets.servpro_agents_events limit 10;

我的输出看起来:

enter image description here

感谢您能给予我的支持。

谢谢

1 个答案:

答案 0 :(得分:1)

配置单元中没有直接功能。

1为此创建UDF。

立即转换日期,然后计算(-24 * 60 * 60)秒,然后将int改回数据。

使用from_unixtime和unix_timestamp实现以下代码。

public static <T, U extends Comparable<? super U>> Comparator<T> comparing(
        Function<? super T, ? extends U> keyExtractor)
{
    Objects.requireNonNull(keyExtractor);
    return (Comparator<T> & Serializable)
        (c1, c2) -> keyExtractor.apply(c1).compareTo(keyExtractor.apply(c2));
}

发件人时间 将具有给定模式的时间字符串转换为Unix时间戳(以秒为单位)此函数的结果以秒为单位。

Unix_timestamp

使用默认时区和默认语言环境将格式为yyyy-MM-dd HH:mm:ss的时间字符串转换为Unix时间戳(以秒为单位),如果失败则返回0:unix_timestamp('2009-03-20 11: 30:01')= 1237573801