我有一个专栏 eventtime 只将一天中的时间存储为字符串。如: 0445AM -手段 04:45 AM . 我使用下面的查询来转换为unix时间戳。
eventtime
0445AM
04:45 AM
select unix_timestamp(eventtime,'hhmmaa'),eventtime from data_raw limit 10;
对于测试数据,这似乎工作得很好。我一直认为unixtimestamp是日期和时间的组合,而在这里我只有时间。我的问题是,在执行上述函数时,它会考虑什么日期?时间戳似乎很小。
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 功能
from_unixtime
select from_unixtime (17100,'hhmmaa')
退货:
如果使用包含日期的格式进行转换,您将看到它假定日期为 1970-01-01 ```select from_unixtime (17100,'yyyy-MM-dd hhmmaa')
1970-01-01
1970-01-01 0445AM
请参见此处的配置单元函数dosc。 还有一个关于unix时间戳的非常有用的站点
1条答案
按热度按时间s4chpxco1#
unix timestamp是从unix epoch(1970-01-01 00:00:00 utc)开始的bigint秒数。unix时间戳是一种将时间跟踪为运行总秒数的方法。
退货
这正是4小时45分转换成秒。
退货
17100
并将其转换回原来的用途from_unixtime
功能退货:
如果使用包含日期的格式进行转换,您将看到它假定日期为
1970-01-01
```select from_unixtime (17100,'yyyy-MM-dd hhmmaa')
1970-01-01 0445AM