Hive 在配置单元中将仅时间转换为unixtimestamp

Hive 在配置单元中将仅时间转换为unixtimestamp,hive,timestamp,hiveql,unix-timestamp,Hive,Timestamp,Hiveql,Unix Timestamp,我有一个列eventtime,它只将一天中的时间存储为字符串。如: 0445AM-表示04:45am。我正在使用下面的查询转换为UNIX时间戳 select unix_timestamp(eventtime,'hhmmaa'),eventtime from data_raw limit 10; 对于测试数据来说,这似乎很好。我一直认为unixtimestamp是日期和时间的组合,而在这里我只有时间。我的问题是在执行上述功能时会考虑什么日期?时间戳似乎很小。Unix时间戳是从Unix纪元(197

我有一个列
eventtime
,它只将一天中的时间存储为字符串。如:
0445AM
-表示
04:45am
。我正在使用下面的查询转换为UNIX时间戳

select unix_timestamp(eventtime,'hhmmaa'),eventtime from data_raw limit 10;

对于测试数据来说,这似乎很好。我一直认为unixtimestamp是日期和时间的组合,而在这里我只有时间。我的问题是在执行上述功能时会考虑什么日期?时间戳似乎很小。

Unix时间戳是从Unix纪元(1970-01-01 00:00:00 UTC)算起的最大秒数。unix时间戳是一种以运行总秒数跟踪时间的方法

select unix_timestamp('0445AM','hhmmaa') as unixtimestamp
返回

17100
这正好是4小时45分钟转换成秒

select 4*60*60 + 45*60
返回
17100

要将其转换回,请使用
from_unixtime
函数

select from_unixtime (17100,'hhmmaa') 
返回:

0445AM
1970-01-01 0445AM
如果使用包含日期的格式进行转换,您将看到它假定日期为
1970-01-01

select from_unixtime (17100,'yyyy-MM-dd hhmmaa') 
返回:

0445AM
1970-01-01 0445AM
请参阅配置单元功能dosc


还有一个非常有用的关于

的网站,谢谢。这是一个清楚的解释。我是蜂巢的新手。从未想过通过提供“yyyy-MM-dd”选项将其转换回。