如何在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|
+------------------------+