pyspark:将字符串更改为时间戳

问题描述

我有一列字符串格式,有些行也是空的。 我添加随机时间戳,使其变成如下形式,将其转换为时间戳。

日期
null
22-04-2020
日期
01-01-1990 23:59:59.000
22-04-2020 23:59:59.000

df = df.withColumn('date',F.concat (df.date,F.lit(" 23:59:59.000")))
df = df.withColumn('date',F.when(F.col('date').isNull(),'01-01-1990 23:59:59.000').otherwise(F.col('date')))

df.withColumn("date",F.to_timestamp(F.col("date"),"MM-dd-yyyy HH mm ss SSS")).show(2)

但在此之后列日期变为空。

谁能帮我解决这个问题。 要么将字符串直接转换为时间戳

解决方法

您的时间戳格式应该以 dd-MM 开头,而不是 MM-dd,而且您还缺少时间部分的一些冒号和点。试试下面的代码:

df.withColumn("date",F.to_timestamp(F.col("date"),"dd-MM-yyyy HH:mm:ss.SSS")).show()
+-------------------+
|               date|
+-------------------+
|1990-01-01 23:59:59|
|2020-04-22 23:59:59|
+-------------------+