Sql server - tester si une date transmise est bissextile ou non

Contenu du snippet

Dans le cadre d'une question posée sur ce forum, j'ai développé une fonction SQL Server permettant de tester si une années transmise est Bissextile ou non.
La règle pour une année bissextile est disponible ici :
- http://dispourquoipapa.free.fr/histoire/hi0010.htm

Pour simplifier toutes les années divisibles par 4 sont bissextiles sauf si on tombe sur un centenaire. Le seul cas ou une année centenaire est bissextile est lorsque celle-ci est divisible par 400.

Source / Exemple :


---------------------------------------------------------------------
SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS ON 
GO

---------------------------------------------------------------------
ALTER  FUNCTION TEST_BISSEXTILE 
(
	@YEAR INT
)
	RETURNS BIT
AS
-- Vérification si l'année transmise est une année bissextile 

BEGIN
-- @YEAR est l'année considérée
-- RENVOI 1 SI VRAI ET 0 SI FAUX

	DECLARE @RESULTAT BIT
	SET @RESULTAT = 0
	IF ISNUMERIC(@YEAR)=0 
		RETURN 0

	DECLARE @RESTESECULAIRE INT
	DECLARE @RESTEBISSEXTILE INT

	SET @RESTESECULAIRE = @YEAR % 100

	IF @RESTESECULAIRE = 0
		BEGIN
		SET @RESTEBISSEXTILE = @YEAR % 400

		IF @RESTEBISSEXTILE = 0 
			SET @RESULTAT = 1
		END
	ELSE
		BEGIN
		SET @RESTEBISSEXTILE = @YEAR % 4
		
		IF @RESTEBISSEXTILE = 0 
			SET @RESULTAT = 1
		END

	RETURN @RESULTAT

END

---------------------------------------------------------------------
GO
SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

---------------------------------------------------------------------

-- Pour tester cette fonction :

 SELECT dbo.TEST_BISSEXTILE(1996) AS BISSEXTILE
-- et
 SELECT dbo.TEST_BISSEXTILE(2001) AS BISSEXTILE

Conclusion :


Bon Coding

Romelard Fabrice.

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.