The first thing I would do is:
Select Distinct ARP.InstallDate0
Into #tempDates
From ... ARP
I would then evaluate all of the different formats - and start categorizing them. For example - if you have dates like 'Thu Apr 06 11:13:12 PDT 2016' and similar dates but all with the same format - that becomes one category.
Dates as nn/nn/yyyy need further review - is that dd/mm/yyyy or mm/dd/yyyy and can you be sure they are the correct format?
Once you have identified the different available formats - you can the derive code to convert each type to a valid date string that can then be cast/converted.
Sample code:
Declare @dateString varchar(30) = 'Fri Apr 07 12:11:12 EDT 2017';
Select *
, stuff(s1.DateString, 7, 0, s1.DateStringYear)
, try_cast(stuff(s1.DateString, 7, 0, s1.DateStringYear) As datetime)
From (Values (@dateString)) As dt(DateString)
Cross Apply (Values (substring(dt.DateString, 5, 16), right(dt.DateString, 5))) As s1(DateString, DateStringYear)
You also seem to be looking for the MAX value - which isn't going to work out how you expect. You need to convert the values to valid dates before getting the max value - simply because 'Fri' comes before 'Mon' but 'Mon Apr 10 13:13:13 PDT 2018' is later than 'Fri Apr 07 12:11:12 EDT 2017'.
The important part of the above code is this:
substring( {date string}, 5, 16) --gets the first part of the date
right( {date string}, 5) --gets the year with leading blank
stuff( {first part of date}, 7, 0, {year}) --builds valid date string for cast/convert
This only works for those date strings with that specific format - so a check for that format is needed so you apply the above code only to those strings that match.