Der Nachteil, wenn man ein Feld für den Insert benennt, zieht der Default der DB nicht !
Nur wenn beim Insert ein Feld nicht benannt wird, wird der Default genommen.
Setzt du das Feld auf NULL, gibts einen Fehler, wenn NULL nicht erlaubt ist.

Wie gesagt, die AS/400 und manche andere DB's erlauben auch Strings als Parameter, wenn das Datum eindeutig erkannt werden kann.
Dies ist bei der AS/400 eben das ISO-Format.

In VB löse ich das eben so:
if ... then
.Parameter(MyDate)="0001-01-01"
else
.Parameter(MyDate)=format(MyDate, "jjjj-mm-dd")
end if

Ich denke, für Java gibts ähnliches.