蜂巢约会演员问题

时间:2019-05-26 06:56:41

标签: sql hadoop hive bigdata hiveql

您好,我在Hive表格中有一列带有这样的日期值。

cl1
31102019000000
30112019000000
31122019000000

我试图将列值转换为这种日期格式

Select from_unixtime(unix_timestamp(cl1,'yyyy/MM/dd'),'yyyy-MM-dd') from table1;

它打印NUll。任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:4)

您说您的日期是dd-mm-yyyy,但随后发布的数据根本没有连字符

假设31102019000000是2019年10月31日00:00:00

Select from_unixtime(unix_timestamp(cl1,'ddMMyyyyHHmmss'),'yyyy-MM-dd') from ...

将格式字符串匹配到数据。

答案 1 :(得分:1)

尝试使用此

Select from_unixtime(unix_timestamp(REGEXP_REPLACE(cl1,'0+$',''),'ddMMyyyy'),'yyyy-MM-dd') from table1;

但这将在2020,2010年失败。 因此,以下查询将是更好的选择

Select from_unixtime(unix_timestamp(cast(cast(cl1/1000000 as bigint) as string),'ddMMyyyy'),'yyyy-MM-dd') from table1;

答案 2 :(得分:-1)

您试图转换为日期格式的UnixTimeStamp超出范围。 您的时间戳记对应于:

GMT: Saturday, August 2, 2955 1:43:20 AM
Your time zone: Saturday, August 2, 2955 5:43:20 AM GMT+04:00
Relative: In 936 years

这是MYSql社区中的一个开放错误。请检查以下URL以供参考。 https://forums.mysql.com/read.php?20,385047,385132#msg-385132

MySQL数据库的内置函数(例如UNIX_TIMESTAMP())将在2038年1月19日世界标准时间03:14:07之后返回0。(来源:https://en.wikipedia.org/wiki/Year_2038_problem