我有一个包含CreateDate列的 Dataframe ,格式如下:
CreateDate
/Date(1593786688000+0200)/
/Date(1446032157000+0100)/
/Date(1533904635000+0200)/
/Date(1447839805000+0100)/
/Date(1589451249000+0200)/
我想把这个格式转换成日期/时间戳,所以例外的输出是:
CreateDate
2020-07-03 14:31:28 +02:00
2015-10-28 11:35:57 +01:00
2018-08-10 12:37:15 +02:00
2015-11-18 09:43:25 +01:00
2020-05-14 10:14:09 +02:00
我在SQL中有这样一个查询,它给出了所需的输出,可以帮助开发:
cast(convert(VARCHAR(30), DATEADD(Second, convert(BIGINT, left(replace(replace(CreateDate, '/date(', ''), ')/', ''), 13)) / 1000, '1970-01-01 00:00:00'), 20) + ' ' + '+' + left(right(replace(replace(CreateDate, '/date(', ''), ')/', ''), 4), 2) + ':' + right(replace(replace(CreateDate, '/date(', ''), ')/', ''), 2) AS DATETIMEOFFSET(0)) AS CreateDate
有谁能帮我实现这个目标吗?
谢谢大家!
1条答案
按热度按时间eblbsuwk1#
使用
regexp_extract
提取时间戳和时间偏移。然后
from_unixtime
将秒数转换为时间戳,注意from_unixtime
需要秒数,而时间戳的单位是毫秒,这就是为什么我们省略了000
(天真地假设在数据中,所有记录中的值都是零,否则需要稍微调整一下)。