[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