I would construct a function like this for the same purpose.
Not so easy to read but I think it is probably a little more efficient.
/*
DECLARE @dtest NVARCHAR(14)
SET @dtest=dbo.GetDateTimeString(getdate())
SELECT @dtest as Test,getdate()
*/
ALTER FUNCTION [dbo].[GetDateTimeString]
(
@inDateTime datetime
)
RETURNS varchar(12)
AS
BEGIN
DECLARE @DateString varchar(12)
SELECT @DateString = CONVERT(varchar(8), @inDateTime, 112) +
STUFF('00', 3 - LEN(CONVERT(varchar(2), DATEPART(hour, @inDateTime))), 2, CONVERT(varchar(2), DATEPART(hour, @inDateTime))) +
STUFF('00', 3 - LEN(CONVERT(varchar(2), DATEPART(minute, @inDateTime))), 2, CONVERT(varchar(2), DATEPART(minute, @inDateTime)))
RETURN @DateString
END