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”选项将其转换回。