strano che non funzioni nemmeno il punto 3.
Ma sei sicuro che dal DB arrivino le stringhe giuste? tipo hai provato a convertire una stringa hardcodata cosi come l'hai scritta qui?

In ogni modo se è un batch che nasce e muore per essere usato una sola volta e non ne venissi a caso potresti sempre fare alla vecchia maniera: uno split sula stringa e ti ricostruisci il Datetime (occhio all' IF sull'ultima stringa AM/PM).