Informatique - 14 novembre 2014

TSQL Astuce 5 : Modifier une date par un modificateur

Le but est d'autoriser l'utilisateur à écrire un modificateur pour modifier une date. Cela permet d'être plus dynamique.
Un modificateur se compose de 3 parties :
   - Type d'opération sous la forme + ou  -
   - Valeur à appliquer
   - Partie de la date à modifier sous la forme d pour jour, w pour semaine, m pour mois et y pour année

La fonction se présente sous la forme :
CREATE FUNCTION [dbo].[ApplyDateModifier]
(
@date varchar(32),
@modifier varchar(32)
)
RETURNS varchar(32)
AS
BEGIN

declare @return varchar(32),
@type char

set @return=@date
set @type=(substring(reverse(Lower(@modifier)),1,1))

if (@type='y')
begin
set @return=dbo.FormatDate(DATEADD(YEAR, convert(int,replace(@modifier,@type,'')),@date) ,'yyyymmdd')
end

if (@type='m')
begin
set @return=dbo.FormatDate(DATEADD(MONTH, convert(int,replace(@modifier,@type,'')),@date) ,'yyyymmdd')
end

if (@type='w')
begin
set @return=dbo.FormatDate(DATEADD(WEEK, convert(int,replace(@modifier,@type,'')),@date) ,'yyyymmdd')
end

if (@type='d')
begin
set @return=dbo.FormatDate(DATEADD(DAY, convert(int,replace(@modifier,@type,'')),@date) ,'yyyymmdd')
end

return @return

END
On utilise ici la fonction système DateAdd et la fonction vue précédemment FormatDate.

Exemple d'utilisation
select dbo.ApplyDateModifier(GetDate(),'3d');
Cela affichera la date du jour + 3 jours

La limite de cette fonction est qu'elle ne peut mélanger plusieurs partie à modifier.

Rédigé par marmous - Mots clés: developpement, TSQL, SQL Server