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
相关产品推荐
相关产品推荐

