Rolf B: Meldung 242, Konvertierung eines varchar-Datentyps in einen datetime-Datentyp liegt der Wert außerhalb des gültigen Bereichs.

Beitrag lesen

Hallo Andreas,

Die Amerikaner stellen ja normalerweise den Tag in die Mitte, wenn die das dann iso-fizieren, steht das Jahr am Anfang, der Tag in der Mitte und der Monat am Ende … 😉

Nein, sie stellen nicht den Tag in die Mitte, sondern den Monat vor's Datum. Was bei hinten stehendem Jahr natürlich zum gleichen Ergebnis führt... Und „isofizieren“ bedeutet nicht, blindlings das Jahr nach vorn zu holen (und eine angenommene Regel „der Tag kommt in die Mitte“ zu übertragen), sondern ist in ISO 8601 bzw EN 28601 ganz klar als Jahr-Monat-Tag definiert. Entweder YYYY-MM-DD, YYYYMMDD oder zur Not auch YYMMDD.

Unabhängig davon, was der konkrete Auslöser ist, sollte m.E. die entsprechende Konvertiermethode mit passendem Formatstring explizit aufgerufen werden, statt sich auf den Zufall, daß der default-Formatstring passen könnte, zu verlassen.

Wie gesagt, ISO ist ISO und wird vom SQL Server als solches erkannt. Auf Grund der 2017 vorne ist eine andere Interpretation ausgeschlossen. Wobei - es gibt eine kleine Variante: ISO vs ODBC. ISO verlangt eigentlich ein T zwischen Datum und Zeit, ODBC nicht. Ich hatte aber noch nie ein Problem damit, dass SQL Server das nicht korrekt erkannt hätte.

Trotzdem: ein expliter Konvertierungsversuch könnte Klarheit schaffen. Hier die Details.

Rolf

--
sumpsi - posui - clusi