问题描述
我有一列字符串格式,有些行也是空的。 我添加了随机时间戳,使其变成如下形式,将其转换为时间戳。
日期 |
---|
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|
+-------------------+