如何在Spark SQL中格式化日期?

如何在Spark SQL中格式化日期?,sql,apache-spark,pyspark,apache-spark-sql,date-format,Sql,Apache Spark,Pyspark,Apache Spark Sql,Date Format,我需要将此给定日期格式:2019-10-22 00:00:00转换为此格式:2019-10-22T00:00:00.000Z 我知道这可以通过以下方式在某些数据库中完成: 在AWS红移中,可以使用以下方法实现此目的: TO_DATE({RUN_DATE_yyyyy/MM/DD},'YYYY/MM/DD')| |'T00:00.000Z'作为版本_TIME 但我的平台是Spark SQL,因此以上两种都不适用于我,我能得到的最好结果是使用以下工具: concat(d2.VERSION\u TIM

我需要将此给定日期格式:
2019-10-22 00:00:00
转换为此格式:
2019-10-22T00:00:00.000Z

我知道这可以通过以下方式在某些数据库中完成:

在AWS红移中,可以使用以下方法实现此目的:

TO_DATE({RUN_DATE_yyyyy/MM/DD},'YYYY/MM/DD')| |'T00:00.000Z'作为版本_TIME
但我的平台是Spark SQL,因此以上两种都不适用于我,我能得到的最好结果是使用以下工具:

concat(d2.VERSION\u TIME,'T00:00:00.000Z')作为版本时间
这有点老套,但仍然不完全正确,有了这个,我得到了这个日期格式:
2019-10-25 00:00:00T00:00:00.000Z
, 但是这个部分<代码> 0:00:在字符串的中间是多余的,我不能把它放在那里。


任何在这里有任何见解的人都将不胜感激

也许是这样的?这有点不同

scala> val df = spark.range(1).select(current_date.as("date"))
scala> df.show()
+----------+
|      date|
+----------+
|2019-11-09|
+----------+

scala> 

df.withColumn("formatted",
    concat(
    regexp_replace(date_format('date,"yyyy-MM-dd\tHH:mm:ss.SSS"),"\t","T"),
    lit("Z")
    )
).show(false)

+----------+------------------------+
|date      |formatted               |
+----------+------------------------+
|2019-11-09|2019-11-09T00:00:00.000Z|
+----------+------------------------+

这是我自然的想法

spark.sql("""SELECT date_format(to_timestamp("2019-10-22 00:00:00", "yyyy-MM-dd HH:mm:ss"), "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'") as date""").show(false)
结果是:

+------------------------+
|date                    |
+------------------------+
|2019-10-22T00:00:00.000Z|
+------------------------+