上一年份的负号和上一季度的季度

时间:2018-10-30 06:13:14

标签: sql-server tsql

我可以使用哪种SQL代码添加上一季度的某些年份?我还需要在上个季度的前后加减。

我知道上一年该怎么办

datepart(year, getdate()) - 1 as 'Year'

但是在1月,我们运行2018年第4季度的运行报告,如果我在2019年1月运行这部分代码,它将返回2018。

这就是为什么我想看看我能否获得上一季度的年份

3 个答案:

答案 0 :(得分:1)

datepart(year, dateadd(year, -1, getdate())) as 'Year'

答案 1 :(得分:0)

我的意思是,无论您处于哪个季度,都需要报告上一个季度。因此,如果今天是2019年1月至3月,则需要在2018年第4季度报告。如果是2019年4月至6月,则该报告将是2019年第1季度,依此类推。

减去3个月为您提供上一季度的日期。该日期的年份部分将为您提供所需的年份。取该日期的月份部分,加2并除以3得到季度。

create table TestData(Today date)

insert into TestData ( Today ) values
( '2019-01-12' ),
( '2019-02-15' ),
( '2019-03-20' ),
( '2019-04-10' ),
( '2019-05-23' ),
( '2019-06-30' ),
( '2019-07-01' ),
( '2019-08-10' ),
( '2019-09-03' ),
( '2019-10-31' ),
( '2019-11-16' ),
( '2019-12-31' ),
( '2020-03-03' )

select 
  Today,
  datepart(year,dateadd(month,-3,Today)) as [Year To Report],
  (datepart(month,dateadd(month,-3,Today))+2)/3 as [Quarter To Report]
from TestData

结果:

Today      Year To Report Quarter To Report
---------- -------------- -----------------
2019-01-12 2018           4
2019-02-15 2018           4
2019-03-20 2018           4
2019-04-10 2019           1
2019-05-23 2019           1
2019-06-30 2019           1
2019-07-01 2019           2
2019-08-10 2019           2
2019-09-03 2019           2
2019-10-31 2019           3
2019-11-16 2019           3
2019-12-31 2019           3
2020-03-03 2019           4

答案 2 :(得分:-1)

-运行日期:'2019-04-10' -输出:2019

select case when Month('2019-04-10') = 1 Then Year('2019-04-10') - 1 else Year('2019-04-10') end

-运行日期:'2019-01-10' -产出:2018年

select case when Month('2019-01-10') = 1 Then Year('2019-01-10') - 1 else Year('2019-01-10') end