[SQL Server] Construire une datetime à partir d'un chaine de cractère qui contient une date en format YYYYMMDD et une autre chaine qui contient l'heure en format HHMM

  • Imprimer

 

-- =============================================

 

-- Author     :   Zouhaier KHARROUBI

 

-- Create date: 28/09/2016

 

-- Description:   Construire une datetime à partir d'un chaine de cractère qui contient

 

-- une date en format YYYYMMDD et une autre chaine qui contient l'heure en format HHMM

 

-- =============================================

 

DECLARE @DATE_EVENEMENT           CHAR(8)

 

       ,@HEURE_EVENEMENT          CHAR(4)

 

       ,@DATE_HEURE_EVENEMENT     DATETIME

 

SELECT @DATE_EVENEMENT = '20160928'

 

SELECT @HEURE_EVENEMENT = '1354'

 

SELECT      @DATE_HEURE_EVENEMENT = CAST(

 

                  CAST(YEAR(@DATE_EVENEMENT) AS VARCHAR(4))

 

                  + '-'

 

                  + REVERSE(SUBSTRING(REVERSE(CAST('0' + CAST(MONTH(@DATE_EVENEMENT) AS VARCHAR(2)) AS VARCHAR(3)) ),1,2))

 

                  + '-' + REVERSE(SUBSTRING(REVERSE(CAST('0' + CAST(DAY(@DATE_EVENEMENT) AS VARCHAR(2)) AS VARCHAR(3)) ),1,2)) +

 

                  'T'

 

                  + CAST(SUBSTRING(@HEURE_EVENEMENT,1,2) AS VARCHAR(2)) + ':' + CAST(SUBSTRING(@HEURE_EVENEMENT,3,2) AS VARCHAR(2))+ ':' + CAST(SUBSTRING(@HEURE_EVENEMENT+'00',5,2) AS VARCHAR(2))

 

                  AS DATETIME)

 

SELECT      @DATE_HEURE_EVENEMENT