Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

To_Date function always returns null

I have a string formatted column which I get via:

session.sql("select milestoneactualdate from dba")

This column contans data like "20190101". I want to cast this string to date via:

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

I also tried:

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

But it always returns "null". Why is my cast function not working?

like image 601
JohnDole Avatar asked Aug 06 '26 03:08

JohnDole


1 Answers

Your date format needs to be yyyyMMdd, see 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|
+----------+
like image 61
Psidom Avatar answered Aug 08 '26 01:08

Psidom