将日期转换为另一种格式 Scala Spark

Convert date to another format Scala Spark

我正在读取包含两种类型日期的 CSV:

我正在尝试将第一种类型的所有日期转换为第二种类型,但找不到好的解决方案。我正在尝试这个:

val pr_date = readeve.withColumn("Date", when(to_date(col("Date"),"dd-MMM-yyyy hh:mm:ss").isNotNull,
      to_date(col("Date"),"dd/MM/yyyy hh:mm")))
pr_date.show(25)

然后我将整个日期列作为空值:

我正在尝试使用此功能:

 def to_date_(col: Column,
            formats: Seq[String] = Seq("dd-MMM-yyyy hh:mm:ss", "dd/MM/yyyy hh:mm")) = {
    coalesce(formats.map(f => to_date(col, f)): _*)
 }
 
 val p2 = readeve.withColumn("Date",to_date_(readeve.col(("Date")))).show(125)

并且在第一种类型的日期中我也得到空值:

我做错了什么? (新的 Scala Spark

Scala 版本:2.11.7 星火版本:2.4.3

试试下面的代码?请注意 17HH,而不是 hh。也可以尝试 to_timestamp 而不是 to_date 因为你想保持时间。

val pr_date = readeve.withColumn(
    "Date",
    coalesce(
        date_format(to_timestamp(col("Date"),"dd-MMM-yyyy HH:mm:ss"),"dd/MM/yyyy HH:mm"),
        date_format(to_timestamp(col("Date"),"dd/MM/yyyy HH:mm"),"dd/MM/yyyy HH:mm")
    )
)