如何将YYYY MM-DD转换为火花sql中的YYYYMMDD .例2021-11-25应该是20211121.
在SERVER中,它很容易,可以借助转换()或Format ()的帮助。如何在星火 SQL中实现?
我不想将其转换为DataFrame或DF .Looking,以获得使用spark的答案。
这不是一个重复的问题,我需要使用SQL而不是Pyspark来完成这个任务!
发布于 2021-11-25 12:20:14
请先检查表的架构,因为字段可以是日期或字符串。
# 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)))我们可以看到,我们的字符串日期和日期对象都是:。现在让我们将两者转换为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|
>>+----------+----------+------------------+-------------------+https://stackoverflow.com/questions/70110468
复制相似问题