Du hast doch auf beiden Seiten einen Zeitwert, warum gehst Du über Value und String?
Klappt es denn eventuell so:
Params[3].AsTime := AdvDateTimePicker2.Time;
Zumindest mit den Zeos-Komponenten dürfte das so funktionieren.
Nachtrag:
TDAParam Members scheint .AsTime nicht zu kennen. Aber zumindest .AsString. Dies würd' ich dann auch bei der Übergabe eines Strings verwenden, statt .Value, da damit zumindest bei der Wertübergabe in Delphi die Typsicherheit gegeben ist. Damit spart man sich die (eventuell) möglichen Typunsicherheiten bzw. die zusätzliche Konvertierung, die beim Umweg über .Valus (= Variant) möglich sein könnten.
Da TDateTime und damit Time in Delphi letztlich Floats sind, könnte .AsFloat auch noch 'ne Alternative sein.