I would start by not using Dynamic SQL where possible. So in other words instead of passing in the table and the column have a Stored Procedure for each table. Than your UPDATE statement can be reduced to:
UPDATE YourTableName
SET YourDateTimeColumn = CONVERT(datetime, STUFF(STUFF(STUFF(STUFF(YourDateCharColumn, 5, 0, '-'), 8, 0, '-'), 14, 0, ':'), 17, 0, ':'), 120)
WHERE YourTableID = @FirstID