Osservando questa documentazione
, sembra che tu stia specificando due opzioni contraddittorie (AllowZeroDateTime=true e ConvertZeroDateTime=true ) e uno che sembra non essere elencato (ZeroDateTimeBehavior=ConvertToNull ).
Lo suggerisco a meno che tu non abbia dati effettivi che sono DateTime.MinValue che non vuoi confondere con il valore "zero", tu solo specifica ConvertZeroDateTime=true e rileva se il risultato è DateTime.MinValue . Sicuramente non dovresti chiama reader.GetDateTime() , quindi converti il risultato in una stringa e poi di nuovo in un DateTime - dovresti evitare il più possibile le conversioni di stringhe, poiché possono rovinarti le cose abbastanza facilmente.
Non è molto chiaro quale valore di stringa desideri per questi valori "zero", ma dovresti essere in grado di utilizzarli in casi speciali con DateTime.MinValue abbastanza facilmente. Personalmente proverei effettivamente a mantenere i dati nella loro forma "nativa" il più possibile piuttosto che convertire tutto in stringhe, ma questa è una battaglia diversa.