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

如何在Spark SQL中从指定日期获取三个月前第一天的日期

Spark SQL 实现指定日期转三个月前首日

直接使用Spark SQL内置的两个日期函数组合即可实现需求,示例代码如下:

-- 以入参日期'2021-08-21'为例
SELECT date_trunc('month', add_months('2021-08-21', -3)) AS target_date;

执行后返回结果为 2021-05-01,完全匹配要求。

函数逻辑说明

  • add_months(日期, 偏移量):用于对日期做月份维度的偏移,偏移量为负数表示向前推对应月份,这里传-3就会把输入日期往前推3个月,add_months('2021-08-21', -3) 执行后得到中间结果 2021-05-21
  • date_trunc('month', 日期):用于将日期截断到当月第一天,对上一步得到的2021-05-21执行该函数后就得到目标结果2021-05-01

注意事项

如果你的日期存储为字符串格式,建议先通过to_date()函数转换为日期类型再处理,避免格式异常:

-- dt为存储日期的字符串字段,格式为yyyy-MM-dd
SELECT date_trunc('month', add_months(to_date(dt), -3)) AS target_date
FROM 你的表名;

以上写法兼容Spark 2.3及所有更高版本,date_trunc的第一个参数也可以替换为mm、mon,最终效果一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 02:27:03