[SQL Server] Formater une date du format 'JJ NomMois. YYYY' vers 'YYYYMMJJ'
-- =============================================
-- Author : Zouhaier KHARROUBI
-- Create date : 13/04/2016
-- Description : Formater une date du format 'JJ NomMois. YYYY' vers 'YYYYMMJJ'
-- Exemples : '02 janv. 2016' ==> 20160102
-- '6 avr. 2016' ==> 20160406
-- '07-mars-16' ==>20160307
-- =============================================
CREATE FUNCTION [dbo].[ufn_FormaterDate]
(
@Date VARCHAR(50)
)
RETURNS VARCHAR(8)
AS
BEGIN
-- Declare the return variable here
DECLARE @Valeur_Retour VARCHAR(8)
,@Jour VARCHAR(2)
,@Mois VARCHAR(2)
,@Annee VARCHAR(4)
-- Add the T-SQL statements to compute the return value here
SELECT @Date = REPLACE(@Date,' ','*')
IF ISNUMERIC(SUBSTRING(@Date,1,2))<>1
BEGIN
SELECT @Date = '0' + @Date
END
SELECT @Jour = SUBSTRING(@Date,1,2)
SELECT @Mois = CASE
WHEN @Date LIKE '%janv%' THEN '01'
WHEN @Date LIKE '%fev%' OR @Date LIKE '%fév%' THEN '02'
WHEN @Date LIKE '%mars%' THEN '03'
WHEN @Date LIKE '%avr%' THEN '04'
WHEN @Date LIKE '%mai%' THEN '05'
WHEN @Date LIKE '%juin%' THEN '06'
WHEN @Date LIKE '%juil%' THEN '07'
WHEN @Date LIKE '%ao%' THEN '08'
WHEN @Date LIKE '%sep%' THEN '09'
WHEN @Date LIKE '%oct%' THEN '10'
WHEN @Date LIKE '%nov%' THEN '11'
WHEN @Date LIKE '%dec%' OR @Date LIKE '%déc%' THEN '12'
ELSE 'IN'
END
SELECT @Annee = '20' + REVERSE(SUBSTRING(REVERSE(@Date),1,2))
SELECT @Valeur_Retour = @Annee + @Mois + @Jour
-- Return the result of the function
RETURN @Valeur_Retour
END