我在hive中有一个表,其中列为“dates”(字符串),值为“5/29/2014 11:58:02 AM”。 我需要将数据类型从字符串更改为时间戳来处理数据,我创建了临时表并尝试从原始表中插入数据:
create table temp as select
level,
from_unixtime(unix_timestamp(dates,'YYYY-MM-DD HH:MM:SS')) as newTime,
source,
eventid,
task,
description,
category
from logs;
它不起作用。怎么解决这个问题? 请帮忙。
答案 0 :(得分:2)
你可以尝试下面的unix_timestamp,看看是否有效。
unix_timestamp(dates, 'MM/dd/yyyy h:mm:ss a')
要了解有关日期格式的详情,请查看以下链接:http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html
PS:我没有尝试过这个,因为我现在面前没有配置蜂巢。
答案 1 :(得分:1)
我希望理解以下这个例子可以解决问题
创建表格ex(id字符串,计时字符串,状态字符串)
行格式分隔
字段以'\ t'结尾 由'\ n'终止的行 存储为文本文件;将数据本地路径'/home/jayanthsn/Jay.txt'加载到表格ex;
O / P:
User01 03-09-2015 10:00 logintime
User02 04-09-2015 10:00 logintime
User03 05-09-2015 10:00 logintime
(将日期格式与字符串数据类型一起使用。)
稍后通过将该列设为时间戳来再创建一个表。
创建表ex1(id字符串,计时时间戳,状态字符串) 行格式分隔
字段以'\ t'结尾 由'\ n'终止的行 存储为文本文件;插入表ex1选择id, from_unixtime(unix_timestamp(时间,'MM-dd-yyyy HH:mm')),状态来自ex;
O / P:
User01 2015-03-09 10:00:00 logintime
User02 2015-04-09 10:00:00 logintime
User03 2015-05-09 10:00:00 logintime
现在您可以获得标准时间戳格式。