计算 Hive 24 小时后的日期
Calculate a date in behind 24 hours Hive
我的需求真的很傻,所以基本上我需要在 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;
我的输出看起来是:
感谢您能给予我的支持。
感谢
配置单元中没有直接的函数。
1 为此创建 UDF。
或
以秒为单位转换日期并计算(-24 *60*60)秒,然后将 int 更改回数据。
使用 from_unixtime 和 unix_timestamp 实现以下代码。
select from_unixtime(unix_timestamp(recorddate) - 86400)
from mtmbuckets.servpro_agen ts_events limit 10;;
From_unixtime
将具有给定模式的时间字符串转换为 Unix 时间戳(以秒为单位)此函数的结果以秒为单位。
Unix_timestamp
将格式为 yyyy-MM-dd HH:mm:ss 的时间字符串转换为 Unix 时间戳(以秒为单位),使用默认时区和默认语言环境,return 如果失败则为 0:unix_timestamp('2009-03-20 11:30:01') = 1237573801
我的需求真的很傻,所以基本上我需要在 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;
我的输出看起来是:
感谢您能给予我的支持。
感谢
配置单元中没有直接的函数。
1 为此创建 UDF。
或
以秒为单位转换日期并计算(-24 *60*60)秒,然后将 int 更改回数据。
使用 from_unixtime 和 unix_timestamp 实现以下代码。
select from_unixtime(unix_timestamp(recorddate) - 86400)
from mtmbuckets.servpro_agen ts_events limit 10;;
From_unixtime 将具有给定模式的时间字符串转换为 Unix 时间戳(以秒为单位)此函数的结果以秒为单位。
Unix_timestamp
将格式为 yyyy-MM-dd HH:mm:ss 的时间字符串转换为 Unix 时间戳(以秒为单位),使用默认时区和默认语言环境,return 如果失败则为 0:unix_timestamp('2009-03-20 11:30:01') = 1237573801