我如何在pyspark中使用数据类型为date的输出格式(dd-MM-yyyy)?还使用to_date进行了检查,但它会打印默认格式(yyyy-MM-dd)

mnowg1ta  于 2023-06-28  发布在  Spark
关注(0)|答案(1)|浏览(139)

to_date函数不适用于dd-MM-yyyy格式。要么它在输出中为空白,数据类型为date,要么它以正确的格式输出数据类型字符串。我需要的输出格式为dd-MM-yyyy,数据类型为date.so基本上,我需要的输出格式为dd-MM-yyyy,数据类型为date。在上图中,它给出了yy-MM-dd格式的o/p。请帮助。

from pyspark.sql.functions import to_date
import pyspark.sql.functions as F
df = spark.createDataFrame([("12-06-2023",)], ["input_date"])
df = df.withColumn("output_date",F.to_date(df.input_date,"dd-MM-yyyy"))
df.show()
type(df)
lokaqttq

lokaqttq1#

下面是使用PySpark的解决方案,我使用Spark 3.4和Python 3.11执行此示例。
Spark to_date函数将String转换为DataFrame列的Date格式。
因此,我尝试了date_format函数将日期转换为您所需的格式。但是,date_format函数返回的数据类型是string。当我试图将输出date_format转换为date数据类型时,它返回null
所以,到目前为止,我的理解是我们不能将其转换为日期数据类型。我正在尝试其他替代品。

PySpark代码如下:

from pyspark.sql.functions import to_date,date_format
import pyspark.sql.functions as F
df = spark.createDataFrame([("12-06-2023",)], ["input_date"])
df.show()
#+----------+
#|input_date|
#+----------+
#|12-06-2023|
#+----------+
df.printSchema()
#root
# |-- input_date: string (nullable = true)
 
df2 = df.withColumn("output_date",date_format(F.to_date(df.input_date,'dd-MM-yyyy'),'dd-MM-yyyy'))
df2.show()
#+----------+-----------+
#|input_date|output_date|
#+----------+-----------+
#|12-06-2023| 12-06-2023|
#+----------+-----------+

df2.printSchema()
#root
# |-- input_date: string (nullable = true)
# |-- output_date: string (nullable = true)

相关问题