【问题标题】:Convert 2016-08-27 string to date in hive将 2016-08-27 字符串转换为配置单元中的日期
【发布时间】:2017-09-13 21:16:11
【问题描述】:

我正在使用下面的代码将其转换为日期格式,但我的输出始终为空。

select from_unixtime(unix_timestamp(b.temp,'yyyyMMdd'), 'yyyyMMdd') as temp1
from 
([![enter image description here][1]][1]
select a.*, regexp_replace(a.ao_date,'-','') as temp
from clla_samp_base a
) b ;

非常感谢任何帮助!

【问题讨论】:

    标签: date hive unix-timestamp


    【解决方案1】:

    2016-08-27 采用 ISO 日期格式,这是 Hive“按原样”接受的唯一日期格式。

    hive> select cast ('2016-08-27' as date) as dt; 
    OK
    dt
    2016-08-27
    

    附言
    如果您有一列包含这种格式的值,您可以首先将列类型定义为 DATE。

    【讨论】:

    • 这不起作用。我仍然得到 null 作为回报。我的原始列的日期格式为“2016-10-16”,列类型为 string_type。
    • 如您所见,这是经过测试的代码。如果你仍然得到 NULL 这意味着你的输入不是你说的那样。显示hex(your_column) 的结果。
    • 嗨 Dudu,想通了,该列的日期带有双引号,这就是它不起作用的原因。以下代码有效 to_date(FROM_UNIXTIME(unix_timestamp(ft_cl_date, '"yyyy-MM-dd"')))。感谢您的帮助!
    猜你喜欢
    • 2017-01-26
    • 2016-06-22
    • 2023-03-29
    • 1970-01-01
    • 2013-04-11
    • 1970-01-01
    • 2021-03-30
    • 1970-01-01
    • 2016-09-10
    相关资源
    最近更新 更多