【问题标题】:NULL values in a string to date conversion字符串到日期转换中的 NULL 值
【发布时间】:2018-12-21 03:26:18
【问题描述】:

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

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 但我不知道该怎么做。

谢谢

【问题讨论】:

    标签: hive hiveql


    【解决方案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')
    

    【讨论】:

    • 感谢您的回答。查询有效,但不显示小时。我使用子字符串修复了它。
    【解决方案2】:

    您只需使用 TO_DATE 告诉 Oracle 您正在读取的日期格式。 试试:

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

    【讨论】:

    • 这不是oracle。请在回答之前查看标签。
    猜你喜欢
    • 2012-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多