配置单元日期转换问题

o4tp2gmn  于 2021-05-29  发布在  Hadoop
关注(0)|答案(3)|浏览(329)

嗨,在我的配置单元表中,我有一列的日期值如下。

cl1
31102019000000
30112019000000
31122019000000

我试着将列值转换成这样的日期格式

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

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

ewm0tg9j

ewm0tg9j1#

试着用这个

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

但这将在20202010年内失败。所以下面的查询是一个更好的选择

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

pxq42qpu2#

你说你的日期是dd-mm-yyyy,但是发布的数据中根本没有任何连字符
假设3110201900000为2019年10月31日00:00:00

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

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

3yhwsihp

3yhwsihp3#

您试图转换为日期格式的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社区中的一个开放bug。请检查以下网址以供参考。https://forums.mysql.com/read.php?20电话:385047385132
mysql数据库的内置函数,如unix\u timestamp()将在2038年1月19日utc 03:14:07之后返回0(资料来源:https://en.wikipedia.org/wiki/year_2038_problem)

相关问题