You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PySpark中如何将yyyyMM格式整数日期转换为月末日期?

在PySpark中将yyyyMM格式整数日期转换为月末日期

可以通过PySpark内置的日期函数快速实现这个需求,以下是两种简洁的解法:

方法1:直接转换格式后取月末

利用to_date将整数转为yyyyMM格式的日期(默认解析为当月第一天),再通过last_day获取月末日期:

from pyspark.sql import SparkSession
from pyspark.sql.functions import col, to_date, last_day

# 创建测试DataFrame
spark = SparkSession.builder.appName("MonthEndConversion").getOrCreate()
data = [(202201,), (202202,), (202203,), (202212,)]
df = spark.createDataFrame(data, ["int_date"])

# 转换逻辑
df_result = df.withColumn(
    "month_end_date",
    last_day(to_date(col("int_date").cast("string"), "yyyyMM"))
)

df_result.show()

输出结果:

+--------+-------------+
|int_date|month_end_date|
+--------+-------------+
| 202201|   2022-01-31|
| 202202|   2022-02-28|
| 202203|   2022-03-31|
| 202212|   2022-12-31|
+--------+-------------+

方法2:构造当月第一天再取月末

如果需要更明确的步骤,可以先拼接出当月第一天的字符串,再转换为日期后取月末:

from pyspark.sql.functions import concat, lit

df_result = df.withColumn(
    "month_end_date",
    last_day(to_date(concat(col("int_date").cast("string"), lit("01")), "yyyyMMdd"))
)

注意事项

  • 确保整数列的格式严格为yyyyMM,若存在不符合格式的数值,to_date会返回null,可配合coalesce函数处理异常值
  • last_day函数在PySpark 2.0及以上版本均支持,兼容性良好

内容的提问来源于stack exchange,提问作者sparc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 09:36:23