【问题标题】:Spark SQL: Parse date string from dd/mm/yyyy to yyyy/mm/ddSpark SQL:将日期字符串从 dd/mm/yyyy 解析为 yyyy/mm/dd
【发布时间】:2021-06-02 09:53:04
【问题描述】:

我想使用 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 就可以了。 有什么想法吗?

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-19
      • 2014-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-22
      • 1970-01-01
      相关资源
      最近更新 更多