PDC_REPORT_CreazioneDB/sql/Collaudo/funzioni/C6MartPeriodico_getDateTrimestre.sql
2025-06-10 15:29:00 +02:00

35 lines
1.4 KiB
Transact-SQL

-- @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