Spark SQL:将日期字符串从 dd/mm/yyyy 解析为 yyyy/mm/dd

时间:2021-06-02 09:53:04

标签: apache-spark date pyspark apache-spark-sql

我想使用 spark SQL 或 pyspark 将日期字段从“dd/mm/yyyy”重新格式化为“yyyy/mm/dd”。字段类型为字符串:

from pyspark.sql import SparkSession
from pyspark.sql.types import StringType

spark = SparkSession.builder.master("local[1]")\
    .appName("date.com")\
    .getOrCreate()

my_df = spark.createDataFrame(["13/04/2020", "16/04/2020", "19/04/2020"], StringType()).toDF("date")
expected_df = spark.createDataFrame(["2020/04/12", "2020/04/16", "2020/04/19"], StringType()).toDF("date")

我尝试了以下 spark sql 命令,但它返回的日期实际上是“yyyy/MM/dd”而不是“2020/04/12”。

select date_format(date, 'dd/MM/yyyy'), 'yyyy/MM/dd' as reformatted_date
FROM my_df

我还查看了以下文档,但没有看到任何适合我的情况:https://spark.apache.org/docs/latest/sql-ref-datetime-pattern.html

如果在 spark sql 中不可能,那么 pyspark 可以工作。 有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您需要先使用 to_date 转换为日期类型:

select date_format(to_date(date, 'dd/MM/yyyy'), 'yyyy/MM/dd') as reformatted_date
from my_df