Apache Hive:将时间戳从字符串转换为时间戳并保存表

时间:2014-11-12 10:44:38

标签: sql hadoop hive sql-insert

我在hbase中有一张这样的表格:

tableExaple (timestamp, timestamp_string, someOtherStuff)

timestamp的数据类型为timestamp timestamp_string具有数据类型string并具有模式'yyyy-MM-dd HH:mm:ss.SSS'

现在,我想阅读timestamp_string中的值,将其与hive-UDF unix_timestamp(string date, string pattern)转换为timestamp并将其保存在同一个表中timestamp }。

我该怎么做?

一样
INSERT INTO tableExaple (timestamp) SELECT unix_timestamp(timestamp_string, 'yyyy-MM-dd HH:mm:ss.SSS') FROM tableExaple;

不起作用。

1 个答案:

答案 0 :(得分:0)

我不认为unix_timestamp喜欢毫秒格式。由于timestamp_string的类型为string,因此您可以在'.'上拆分并获取日期和时间。因此,如果您有2014-11-11 08:09:10.123split(timestamp_string, '\\.')会给您[2014-11-11 08:09:10, 123]。您现在可以通过[0][1]引用您的数组。

示例:

SELECT otherStuff
    , timestamp
    , unix_timestamp(split(timestamp_string, '\\.')[0], 'yyyy-MM-dd HH:mm:ss') new_time
FROM some_table 

如果您想在new_time列中包含毫秒数,只需从[1]数组中获取split索引(并除以1000)。