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

如何在Netezza SQL中获取当前日期对应的上一季度第一天?

在Netezza SQL中获取上一季度的第一天

Netezza确实没有像SQL Server那样的datediff(quarter)函数,但可以通过extract、add_months和to_date这些内置函数组合实现需求,这里提供两种可行方案:

方案一:通过季度判断拼接日期

直接根据当前季度计算上一季度的年份和起始月份,拼接成日期字符串后转换为日期类型:

SELECT 
    TO_DATE(
        CASE 
            WHEN extract(quarter FROM current_date) = 1 
                THEN (extract(year FROM current_date) - 1) || '-10-01'
            WHEN extract(quarter FROM current_date) = 2 
                THEN extract(year FROM current_date) || '-01-01'
            WHEN extract(quarter FROM current_date) = 3 
                THEN extract(year FROM current_date) || '-04-01'
            ELSE extract(year FROM current_date) || '-07-01'
        END, 
        'YYYY-MM-DD'
    ) AS first_day_of_last_quarter;

方案二:基于当前季度第一天减3个月

先计算当前季度的第一天,再通过add_months函数减去3个月得到上一季度的第一天,逻辑更简洁通用:

SELECT 
    ADD_MONTHS(
        TO_DATE(
            extract(year FROM current_date) || '-' || ((extract(quarter FROM current_date) - 1) * 3 + 1) || '-01',
            'YYYY-MM-DD'
        ),
        -3
    ) AS first_day_of_last_quarter;

逻辑说明

  • 用extract(quarter FROM current_date)获取当前日期所在季度,extract(year FROM current_date)获取年份
  • 方案二中,((extract(quarter FROM current_date) - 1) * 3 + 1)用于计算当前季度的起始月份:Q1对应1,Q2对应4,Q3对应7,Q4对应10
  • add_months(date, -3)实现日期往前推3个月,自动处理跨年情况(比如Q1的上一季度会自动切换到上一年的Q4)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 07:48:27