Uno dei problemi che ogni programmatore di applicativi business deve sempre affrontare è quello della gestione del calendario. Per riuscire a calcolare i giorni lavorativi è necessario conoscere le festività e tra queste l’unica festività che cambia ogni anno è pasquetta.
Come possiamo risolvere il problema?
Esistono svariate possibilità ma una di quelle che mi amo maggiormente è l’utilizzo di una funzione SQLSERVER. E’ velocissima e può essere integrata facilmente all’interno di View o Stored procedure.
CREATE FUNCTION Pasqua
(@Anno INT)
RETURNS SMALLDATETIME
AS
BEGIN
DECLARE @EpactCalc INT,
@PaschalGiorniCalc INT,
@NumDiGiorniAllaDomenica INT,
@PasquaMese INT,
@PasquaGiorno INT
SET @EpactCalc = (24 + 19 * (@Anno % 19)) % 30
SET @PaschalGiorniCalc = @EpactCalc - (@EpactCalc / 28)
SET @NumDiGiorniAllaDomenica = @PaschalGiorniCalc - (
(@Anno + @Anno / 4 + @PaschalGiorniCalc - 13) % 7
)
SET @PasquaMese = 3 + (@NumDiGiorniAllaDomenica + 40) / 44
SET @PasquaGiorno = @NumDiGiorniAllaDomenica + 28 - (
31 * (@PasquaMese / 4)
)
RETURN
(
SELECT CONVERT
( SMALLDATETIME,
RTRIM(@Anno)
+ RIGHT('0'+RTRIM(@PasquaMese), 2)
+ RIGHT('0'+RTRIM(@PasquaGiorno), 2)
)
)
END