我想使用 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 可以工作。 有什么想法吗?
答案 0 :(得分:1)
您需要先使用 to_date
转换为日期类型:
select date_format(to_date(date, 'dd/MM/yyyy'), 'yyyy/MM/dd') as reformatted_date
from my_df