在pyspark中将时间戳格式转换为iso时间格式

qyuhtwio  于 2021-07-14  发布在  Spark
关注(0)|答案(1)|浏览(469)

我有一个pysparkDataframe,它有一个字段,time,它有两种格式的时间戳,

"11-04-2019,00:32:13" and "2019-12-05T07:57:16.000Z"

如何将所有时间戳转换为第二种格式,即与此格式匹配的iso时间格式?

%Y-%m-%dT%H:%M:%S.%fZ

所以理想情况下,“11-04-2019,00:32:13”应该是“2019-11-04t00:32:13.000z”

vu8f3i0k

vu8f3i0k1#

您可以先将时间戳强制转换为时间戳类型,然后使用 date_format 要将它们转换回所需格式,请执行以下操作:

df.show(truncate=False)
+------------------------+
|time                    |
+------------------------+
|11-04-2019 00:32:13     |
|2019-12-05T07:57:16.000Z|
+------------------------+

import pyspark.sql.functions as F

df2 = df.withColumn(
    'time', 
    F.date_format(
        F.coalesce(
            F.to_timestamp('time'), 
            F.to_timestamp('time', 'MM-dd-yyyy HH:mm:ss')
        ), 
        "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"
    )
)

df2.show(truncate=False)
+------------------------+
|time                    |
+------------------------+
|2019-11-04T00:32:13.000Z|
|2019-12-05T07:57:16.000Z|
+------------------------+

相关问题