From what I understand, you want to add the first two digits as an hour and the second as minutes, but you do not do this in your DATEADD calls - you add both parts as HOUR - try this instead:
SELECT DATE_DEBUT, HEURE_DEBUT, DATEADD(MINUTE, CONVERT(int, SUBSTRING(HEURE_DEBUT, 3, 2)), DATEADD(HOUR, CONVERT(int, SUBSTRING(HEURE_DEBUT, 1, 2)), DATE_DEBUT)) FROM ESPTEMPS_PROGRAMMATION
Here I use two nested DATEADD - internal DATEADD adds hours, external adds minutes to the result of adding hours.
Also: SUBSTRING in SQL Server 1 , for example. the first character of the string is at position 1 (not 0, as you assume)
source share