-- @NumTrim = 0 (Corrente) -- @NumTrim = 1 (Precedente) -- @NumTrim = 2 (Precedente - 1) -- @WhichDate = 0 (Inizio Trimestre) -- @WhichDate = 1 (Fine Trimestre (prec.)) -- @DataFineGenerazione = 0 (Data Fine del Trim (prec.)) -- @DataFineGenerazione = 1 (Data Fine generazione del Trimestre indicato da @NumTrim, ha senso solo quando @WhichDate = 1) -- select [C6MartPeriodico].[getDateTrimestre] (0, 1, 0) CREATE function [C6MartPeriodico].[getDateTrimestre]( @NumTrim int, @WhichDate bit, @DataFineGenerazione bit ) returns varchar(8) as begin declare @data datetime declare @retData varchar(8) -- set @NumTrim = 2 -- set @WhichDate = 0 -- set @DataFineGenerazione = 1 if @WhichDate = 0 --(Inizio) -- Data Inizio set @data = dateadd(d, 1, dateadd(m, -@NumTrim * 3, C6MartPeriodico.getTrimestre(getdate(),0))) else if @DataFineGenerazione = 0 -- Data Fine Trimestre set @data = dateadd(m, -@NumTrim * 3, C6MartPeriodico.getTrimestre(getdate(),0)) else -- Data Fine Generazione del Trimestre indicato dal parametri @NumTrim --set @data = dateadd(m, 1, dateadd(m, -@NumTrim * 3, C6MartPeriodico.getTrimestre(getdate(),0))) set @data = dateadd(d, -1, dateadd(m, 1, dateadd(d, 1, dateadd(m, -@NumTrim * 3, C6MartPeriodico.getTrimestre(getdate(),0))))) set @retData = convert(varchar(4), year(@data)) + right('0' + convert(varchar(2), month(@data)), 2) + right('0' + convert(varchar(2), day(@data)), 2) return @retData end