将日期'11 / 2/2014'(mm / d / yyyy)转换为配置单元中的时间戳

时间:2016-08-26 06:46:35

标签: hadoop hive

我想使用Hive将日期'11 / 2/2014'转换为时间戳。 此日期采用字符串格式。 我尝试了很多方法,但我得到了NULL值。

2 个答案:

答案 0 :(得分:0)

这是语法:

CAST(FROM_UNIXTIME(UNIX_TIMESTAMP(<date_column>,'MM/dd/yyyy')) as TIMESTAMP)

您始终需要转到unix_timestamp,然后从unix时间戳转换为正常时间戳。它看起来并不好,但它确实有用。

要检查一下,可能是您的语法正确但格式错误。也许你的格式是dd / MM / yyyy?这就是为什么你应该给我们下次尝试让它工作的原因。

答案 1 :(得分:0)

仅使用字符串函数的替代方法:

SELECT CAST(
         CONCAT(
           REGEX_REPLACE(
           REGEX_REPLACE( dirty_date
                        , '^([0-9]*)/([0-9]*)/([0-9]*)$','$3-0$1-0$2')
                        , '-0([0-9][0-9])','-$1')
          , ' 00:00:00')
       AS TIMESTAMP)
FROM dirty_input