我有一个字符串格式的列,可以通过以下方式获取:
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”。为什么我的强制转换功能不起作用?
答案 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|
+----------+