To_Date函数始终返回null

时间:2019-04-11 13:15:12

标签: pyspark pyspark-sql

我有一个字符串格式的列,可以通过以下方式获取:

session.sql("select milestoneactualdate from dba")

此列包含类似“ 20190101”的数据。我想通过以下方式将该字符串转换为日期:

session.sql("select *, to_date(milestoneactualdate, '%YYYY%MM%DD') as datetest from dba").show()

我也尝试过:

changedTypedf = df.withColumn("milestoneactualdate", to_date(df["milestoneactualdate"], '%YYYY%MM%DD').cast('Date'))

但是它总是返回“ null”。为什么我的强制转换功能不起作用?

1 个答案:

答案 0 :(得分:1)

您的日期格式必须为yyyyMMdd,请参见Date Format Pattern Syntax

df = spark.createDataFrame([['20190101']], ['milestoneactualdate'])
df.show()
+-------------------+
|milestoneactualdate|
+-------------------+
|           20190101|
+-------------------+

df.selectExpr('to_date(milestoneactualdate, "yyyyMMdd") as date').show()
+----------+
|      date|
+----------+
|2019-01-01|
+----------+