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

Databricks中PySpark SQL如何从Year_week年周列提取对应月份

Databricks SQL 年周字段转两位月份实现方法

你的Year_week是4位年份+2位周数的标准年周编码,不需要手动维护周月映射表,直接用Databricks内置日期函数就能准确计算,还能自动处理跨月周、跨年周的边界情况。
根据你给出的样例规则(周归属以当周最后一天所在自然月为准),可直接运行以下SQL:

SELECT
  Year_week,
  -- 解析年周为当周周一,加6天得到当周周日,提取月份后补前导零为两位格式
  lpad(month(date_add(to_date(cast(Year_week as string), 'yyyyww'), 6)), 2, '0') AS Month
FROM 你的目标表名

如果你的Year_week字段本身就是字符串类型,可以去掉cast(Year_week as string)这段转换。

样例运行结果

和你给出的预期输出完全一致:

Year_weekMonth
20200101
20200201
20200301
20200401
20200502
20200602
20200702

补充说明

  • 代码里'yyyyww'解析模式遵循ISO 8601周规则:每周起始为周一,每年第一周为包含1月4日的周,是国内业务统计最常用的周规则。
  • 如果你的业务规则是按每周第一天(周一)所在自然月算归属,去掉date_add(...,6)逻辑,直接取to_date解析结果的月份即可。
  • 如果你的业务采用周日为每周起始的美式周规则,把解析格式替换为'yyyyuu'即可。
  • 如果不需要带前导零的字符串格式月份,去掉外层lpad函数,直接返回month()的数值结果即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 18:24:40