我有一个hive表,其中有一个事务utc_time_date - 以UTC为单位,时区存储为字符串
customerid string
sessionid string
utc_time_date string
defined_cst timestamp
variable_time timestamp
store_nbr int
utc_date string
defined_cst_visit_date string
variable_date string
tc string
transactiontotal double
usegiftcardsfirst int
associate_flag int
new_user int
time_zone string
utc_time_date
是子查询中名为session的列。
当我使用FROM_UTC_TIMESTAMP(session, 'CST')
时,我会得到正确的时间/日期组合。
以下是创建这些列的代码片段
session as UTC_Time_Date, FROM_UTC_TIMESTAMP(session, 'CST') as Defined_CST,
FROM_UTC_TIMESTAMP(session, time_zone) as Variable_time,
storeid as store_nbr, transactiondate as UTC_Date,
to_date(FROM_UTC_TIMESTAMP(session, 'CST')) as defined_cst_visit_date,
to_date(FROM_UTC_TIMESTAMP(session, time_zone)) as variable_date,
tc, transactionTotal, useGiftCardsFirst, associate_flag, new_user, time_zone
但是 - FROM_UTC_TIMESTAMP(session,timezone)
会返回错误信息,如下所示
utc_time_date defined_cst variable_time variable_date
11/6/2016 1:28 11/5/2016 20:28 11/6/2016 1:28 11/6/2016
可以在此函数中使用列作为时区的输入吗?很明显,您可以使用时间戳列作为日期字段的输入,因为它可以工作。
答案 0 :(得分:0)
所以,我想出了导致我的问题的原因 - 当我创建时区表时,每行末尾都有无关的空白区域。这导致函数出错,并且不返回正确的时区。获得的经验教训 - 制作sue我使用sed删除.csv文件中的空格,然后再使用它们在Hive中创建表格。