如何在SPARK SQL API中将YYYY-MM-DD转换为YYYYMMDD



如何在spark sql中将YYYY-MM-DD转换为YYYYMMDD。实例2021-11-25应该是20211121。

在SQL SERVER中,使用convert((或Format((很容易。如何在SPARKSQL中执行此操作?

我不想将其转换为DataFrame或DF。使用spark-sql寻找答案。

这不是一个重复的问题。我需要使用SQLApi而不是Pyspark来完成这项工作!

请首先检查表的架构,因为字段可以是日期或字符串。

# dateframe with date as string and date as date
df = (spark.createDataFrame([{"date_str": "2021-11-01", "date_str": "2021-11-02"}])
.withColumn("date_date", expr(" to_date(date_str) "))
)
df.show()
df.schema
>>Out[1]:
>>+----------+----------+
>>|  date_str| date_date|
>>+----------+----------+
>>|2021-11-02|2021-11-02|
>>+----------+----------+
>>Out[2]: StructType(List(StructField(date_str,StringType,true),StructField(date_date,DateType,true)))

我们可以在上面看到,我们的字符串日期和作为日期对象的日期都是:YYYY-MM-DD。现在让我们将两者转换为YYYYMMDD:

df_converted = (df
.withColumn("date_str_converted", expr(" date_format(to_date(date_str), 'yyyyMMdd') "))
.withColumn("date_date_converted", expr(" date_format(date_date, 'yyyyMMdd')  "))
)

df_converted.show()
>>Out[3]:
>>+----------+----------+------------------+-------------------+
>>|  date_str| date_date|date_str_converted|date_date_converted|
>>+----------+----------+------------------+-------------------+
>>|2021-11-02|2021-11-02|          20211102|           20211102|
>>+----------+----------+------------------+-------------------+

最新更新