如何更改配置单元中的日期格式

时间:2014-06-23 07:10:41

标签: timestamp hive

我在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;

它不起作用。怎么解决这个问题? 请帮忙。

2 个答案:

答案 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

现在您可以获得标准时间戳格式。