字符串到日期转换中的NULL值

时间:2018-12-20 18:35:24

标签: hive hiveql

我有一个包含以下数据的表:

logs.ip               logs.fecha                logs.metodo
66.249.93.79          19/Nov/2018:03:46:33      GET

所有数据列均为字符串,我想将logs.fecha转换为以下格式的日期:YYYY-MM-dd HH:mm:ss

我尝试以下查询:

SELECT TO_DATE(from_unixtime(UNIX_TIMESTAMP(fecha, 'yyyy-MM-dd'))) FROM logs

查询结果在所有行中均为NULL。

如何使所有行的转换字符串都有效?我知道我必须使用ALTER TABLE,但我不知道该怎么做。

谢谢

2 个答案:

答案 0 :(得分:1)

得到null的原因是因为输入字符串的格式与传递给unix_timestamp的输入不同。 unix_timestamp的第二个参数应指定第一个参数的字符串格式。在from_unixtime中,您可以指定所需的输出格式。如果未指定任何内容,则对from_unixtime的有效输入将以yyyy-MM-dd格式返回输出。

可以通过以下方式修复错误。

from_unixtime(unix_timestamp(fecha,'dd/MMM/yyyy:HH:mm:ss'),'yyyy-MM-dd HH:mm:ss')

答案 1 :(得分:-1)

您只需要告诉Oracle您正在阅读的日期格式TO_DATE。 试试:

SELECT TO_DATE(fecha,'DD/MON/YYYY:HH:MI:SS') FROM logs