嗨,在我的配置单元表中,我有一列的日期值如下。
cl1 31102019000000 30112019000000 31122019000000
我试着将列值转换成这样的日期格式
Select from_unixtime(unix_timestamp(cl1,'yyyy/MM/dd'),'yyyy-MM-dd') from table1;
它打印空。任何帮助都将不胜感激。
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;
pxq42qpu2#
你说你的日期是dd-mm-yyyy,但是发布的数据中根本没有任何连字符假设3110201900000为2019年10月31日00:00:00
Select from_unixtime(unix_timestamp(cl1,'ddMMyyyyHHmmss'),'yyyy-MM-dd') from ...
将格式字符串与数据匹配。。
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电话:385047385132mysql数据库的内置函数,如unix\u timestamp()将在2038年1月19日utc 03:14:07之后返回0(资料来源:https://en.wikipedia.org/wiki/year_2038_problem)
3条答案
按热度按时间ewm0tg9j1#
试着用这个
但这将在20202010年内失败。所以下面的查询是一个更好的选择
pxq42qpu2#
你说你的日期是dd-mm-yyyy,但是发布的数据中根本没有任何连字符
假设3110201900000为2019年10月31日00:00:00
将格式字符串与数据匹配。。
3yhwsihp3#
您试图转换为日期格式的unixtimestamp超出范围。您的时间戳对应于:
它是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)