将字符串类型的日期时间值转换为pyspark中的特定格式

9vw9lbht  于 2023-10-15  发布在  Spark
关注(0)|答案(1)|浏览(132)

我有一个pyspark框架,具有以下类型的日期时间值(字符串类型)-

|text|date_filing|
|AAA|1998-12-22|
|BBBB|2023-08-30 12:03:17.814757+00|
|CCC|null|
|DDD|2017-11-28|

我想把它转换成字符串格式,但在一个特定的格式-“yyyy-MM-ddTHH:mm:ssZ”
我尝试了下面的方法-

df.withColumn('time_start',when((df.date_filing.isNull() | (df.date_filing == '')) ,'').otherwise(to_timestamp(col("date_filing"), "yyyy-MM-dd'T'HH:mm:ss'Z'")))

但是在新列中得到null。
预期产出-

|text|date_filing|
|AAA|1998-12-22T00:00:00Z|
|BBBB|2023-08-30T12:03:17Z|
|CCC||
|DDD|2017-11-28T00:00:00|

如果你能帮忙的话,我将不胜感激。

f87krz0w

f87krz0w1#

可以使用pyspark.sql.functions模块中的date_format函数将日期字符串格式化为所需的格式。下面是一个示例:

df = df.withColumn('date_filing_formatted', when(df.date_filing.isNull() | (df.date_filing == ''), '').otherwise(date_format(to_timestamp(col('date_filing')), 'yyyy-MM-dd\'T\'HH:mm:ss\'Z\'')))

在本例中,我们首先从pyspark.sql.functions模块导入必要的函数。然后,我们使用withColumn方法将一个新列添加到名为date_filing_formatted的对象框架中。我们使用when和otherwise函数来处理date_filing列为null或空的情况。然后,我们使用to_timestamp函数将date_filing列转换为时间戳,并使用date_format函数将时间戳格式化为所需的格式。生成的框架将有一个名为date_filing_formatted的新列,日期字符串的格式为“yyyy-MM-ddTHH:mm:ssZ”。

相关问题