J'ai mis ces fonctions toujour utiles dans CODIX (les snippets) mais l'un est faut et on peut pas le corriger la bas... alors je le poste ici, corrigé :)
2 fonctions, 1 pour le dernier jour du mois, l'autre pour le dernier jour de la semaine.
Ha, aussi je reposte celle pour les années bissextiles ^^ ça mange pas de pain :)
Source / Exemple :
CREATE FUNCTION [dbo].[Last_Day] (@date AS datetime)
RETURNS datetime
AS
BEGIN
set @date = DATEADD(DAY, 1-DAY(@date), @date)
set @date = DATEADD(MONTH, 1, @date)
return DATEADD(DAY, -1, @date)
END
CREATE FUNCTION [Last_Week_Day] (@date AS datetime)
RETURNS datetime
AS
BEGIN
return DATEADD(DAY, 7-DatePart(DW, @date), @date)
END
CREATE FUNCTION [IsLeapYear] (@Annee AS int)
RETURNS bit
AS
BEGIN
Declare @Date29Fev AS Datetime
Declare @Result AS bit
SET @Date29Fev = DATEADD(DAY, -1, Cast('01/03/'+Cast(@Annee AS varchar(4)) AS datetime))
IF Day(@Date29Fev )=29
SET @Result =1
ELSE
SET @Result = 0
return @Result
END
Conclusion :
Remarque pour Last_Day : obligatoire de faire 3 étapes
parce que en 1 seule étape y'a forcément des cas où ça buggue:
SELECT DATEADD(DAY, -DAY(@date), DATEADD(MONTH, 1, @date))
'30/01/2006' +1mois => '29/02/2006' -29jours => '29/01/2006' au lieu de '31/01/2006' attendu!
Mais si l'on procède dans l'autre sens:
SELECT DATEADD( MONTH, 1, DATEADD(DAY, -DAY(@date), @date))
'03/03/2006' -3jours => '28/02/2006' +1mois => '28/03/2006' au lieu de '31/03/2006'
En effet la fonction DATEADD est intelligente (heureusement)
3 mai 2007 à 14:17
CREATE FUNCTION [dbo].[GetLastDayOfMonth](@Dte As Datetime)
RETURNS DATETIME
BEGIN
SET @Dte=DATEADD(MONTH, 1, @Dte)
RETURN DATEADD(DAY, -DAY(@Dte), @Dte)
END
6 avril 2007 à 20:31
Les 2 seuls formats universels dans SQL Server :
'AAAAMMJJ HH:mm:SS.mms'
'AAAA-MM-JJTHH:mm:SS.mms'
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.