Calculate fiscal year in SQL Server

前端 未结 19 1533
时光说笑
时光说笑 2020-12-16 13:28

How would you calculate the fiscal year from a date field in a view in SQL Server?

19条回答
  •  北荒
    北荒 (楼主)
    2020-12-16 13:35

        declare 
    @InputDate datetime,
    @FiscalInput varchar(2),
    @FiscalYear varchar(4),
    @FiscalMonth varchar(2),
    @FiscalStart varchar(10),
    @FiscalDate varchar(10)
    
    set @FiscalInput = '10'
    set @InputDate = '1/5/2010'
    set @FiscalYear = (select 
                        case 
                        when datepart(mm,@InputDate) < cast(@FiscalInput as int)
                            then datepart(yyyy, @InputDate)
                        when datepart(mm,@InputDate) >= cast(@FiscalInput as int)
                            then datepart(yyyy, @InputDate) + 1
                            end FiscalYear)
    
    
    set @FiscalStart = (select @FiscalInput + '/01/' + @FiscalYear)
    
    set @FiscalDate = (select cast(datepart(mm,@InputDate) as varchar(2)) + '/' + cast(datepart(dd,@InputDate) as varchar(2)) + '/' + @FiscalYear)
    set @FiscalMonth = (select 
                        case 
                        when datepart(mm,@InputDate) < cast(@FiscalInput as int)
                            then 13 + datediff(mm, cast(@FiscalStart as datetime),@InputDate)
                        when datepart(mm,@InputDate) >= cast(@FiscalInput as int)
                            then 1 + datediff(mm, cast(@FiscalStart as datetime), @FiscalDate)
                            end FiscalMonth)    
    
    select @InputDate as Date, 
    cast(@FiscalStart as datetime) as FiscalStart, 
    dateadd(mm, 11,cast(@FiscalStart as datetime)) as FiscalStop,
    cast(@FiscalDate as DateTime) as FiscalDate,
    @FiscalMonth as FiscalMonth, 
    @FiscalYear as FiscalYear
    

提交回复
热议问题