我的需求真的很愚蠢,所以基本上我需要在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;
我的输出看起来:
感谢您能给予我的支持。
谢谢
答案 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