在 Hive 中将字符串与日期和时间一起转换为日期

Convert string to date with date and time together in Hive

我需要将字符串转换为日期时间(日期和时间一起)。

我试试这个:

cast(to_date(from_unixtime(unix_timestamp('20190303164305', 'yyyyMMddHHmmss'))) as date) as date_data_chamada

时区:巴西

但是这样returns只是约会,像这样:2019-03-03,我需要:2019-03-0316:43:05

谢谢!

完整代码:

INSERT INTO p_b.este PARTITION (dt_originacao_fcdr)
SELECT
tp_registro_fcdr,
seq_registro_fcdr,
tp_cdr_fcdr,
dt_atendimento_fcdr,
data_atendimento_completa_fcdr,
cast(from_unixtime(unix_timestamp(data_atendimento_completa_fcdr, 'yyyyMMddHHmmss'),"yyyy-MM-dd HH:mm:ss")as timestamp) as date_data_atendimento_fcdr,
hr_atendimento_fcdr,
duracao_atend_fcdr,
hr_originacao_fcdr,
duracao_total_fcdr,
duracao_chamada_tarifada_fcdr,
st_chamada_fcdr,
fim_sel_orig_fcdr
FROM p_b.norm;

将第二个参数格式字符串传递给from_unixtime。注意返回的类型是string.

from_unixtime(unix_timestamp('20190303164305','yyyyMMddHHmmss'),'yyyy-MM-dd HH:mm:ss')

删除 date 转换和 to_date 函数,因为您期望时间戳!

Example:

hive> select from_unixtime(unix_timestamp('20190303164305', 'yyyyMMddHHmmss'),"yyyy-MM-dd HH:mm:ss") as date_data_chamada;

RESULT:

2019-03-03 16:43:05

如果您使用 to_datecast('string' as date) 则 Hive 结果仅 date(yyyy-MM-dd)!

例如:

hive> select to_date(from_unixtime(unix_timestamp('20190303164305', 'yyyyMMddHHmmss'),"yyyy-MM-dd HH:mm:ss")) as date_data_chamada;

--2019-03-03