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

zbsbpyhn  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(735)

我有一个专栏 eventtime 只将一天中的时间存储为字符串。如: 0445AM -手段 04:45 AM . 我使用下面的查询来转换为unix时间戳。

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

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

s4chpxco

s4chpxco1#

unix timestamp是从unix epoch(1970-01-01 00:00:00 utc)开始的bigint秒数。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 ```
select from_unixtime (17100,'yyyy-MM-dd hhmmaa')

退货:

1970-01-01 0445AM

请参见此处的配置单元函数dosc。
还有一个关于unix时间戳的非常有用的站点

相关问题