如何将格式字符串的日期转换为spark中的时间戳?

how to convert date of format string to timestamp in spark?

%scala
import org.apache.spark.sql.SparkSession
import org.apache.spark.sql.functions.{col, to_date}

Seq(("20110813"),("20090724")).toDF("Date").select(
col("Date"),
to_date(col("Date"),"yyyy-mm-dd").as("to_date")
).show()

+--------+-------+
|    Date|to_date|
+--------+-------+
|20110813|   null|
|20090724|   null|
+--------+-------+
+--------+----------+
|    Date|   to_date|
+--------+----------+
|20110813|2011-01-13|
|20090724|2009-01-24|
+--------+----------+
Seq(("20110813"),("20090724")).toDF("Date").select(
col("Date"),
to_date(col("Date"),"yyyymmdd").as("to_date")
).show()

我正在尝试将字符串转换为时间戳,但我总是 null/default 值返回到日期值

您尚未为要转换的新列指定值。您应该使用 withColumn 添加新的日期列并告诉他使用日期列值。

import org.apache.spark.sql.functions.{col, to_date}
import org.apache.spark.sql.types._
    
val df = Seq((20110813),(20090724)).toDF("Date")
val newDf = df.withColumn("to_date", to_date(col("Date").cast(TimestampType), "yyyy-MM-dd"))
newDf.show()