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

SQL Server 获取指定日期上一年及上季度的SQL语句写法咨询

SQL Server 获取指定日期上一季度对应字段查询方案

完整查询语句

DECLARE @myvalue DATE = '2016-01-01'
-- 计算上一季度的第一天,自动处理跨年边界
DECLARE @prev_quarter_start DATE = DATEADD(QUARTER, DATEDIFF(QUARTER, 0, @myvalue) - 1, 0)

SELECT
    -- 拼接数字格式的年份+季度,转smallint类型
    CAST(YEAR(@prev_quarter_start) * 10 + DATEPART(QUARTER, @prev_quarter_start) AS SMALLINT) AS previous_year_and_quarter_num,
    -- 拼接字母数字混合格式,转varchar(30)类型
    CAST(CONCAT(YEAR(@prev_quarter_start), ' Q', DATEPART(QUARTER, @prev_quarter_start)) AS VARCHAR(30)) AS previous_year_and_month_abbr

逻辑说明

  • 核心计算逻辑DATEADD(QUARTER, DATEDIFF(QUARTER, 0, @myvalue) - 1, 0)可以规避跨年、跨季度的边界错误,不管输入日期是哪个季度的第几天,都能精准定位到上一季度的第一天。
  • 对于示例输入2016-01-01,输出结果为:
    • previous_year_and_quarter_num:20154
    • previous_year_and_month_abbr:2015 Q4
  • 对于题干举例的2011年第四季度日期(比如2011-11-01),输出结果完全符合要求:
    • previous_year_and_quarter_num:20113
    • previous_year_and_month_abbr:2011 Q3

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 14:24:06