SQL-Server 2008
Hallo Community,
in einer Anwendung verwende ich (wie so oft) für Operationen auf dem SQLServer SqlCmd-Objekte, die das jeweilige SqlStatement und die erforderlichen Parameter enthält.
In dem folgende Fall werden Datumswerte aus einer Textbox (also als string) an das SqlCmd per Parameter übergeben. In der Textbox befand sich ein gültiges datem (31.08.2012). Dennoch wurde das Sql fehlerhaft beendet mit der Meldung:
The conversion of a nvarchar data type to a datetime datatype resulted in an out-of-range value.
Hat jemand dazu Erfahrungen gemacht?
Vielen Dank und Gruß,
Karl
Hi telfa,
sicherlich wird der SQL-Server mit dem deutschen Datumsformat nicht zurechtkommen. Warum wandelst du den String nicht in C# direkt in ein DateTime um? Siehe dazu die DateTime.TryParse-Methode, bei der du einen FormatProvider für das deutsche Format übergeben kannst.
Christian
Weeks of programming can save you hours of planning
Hi MrSparkle,
Dein Hinweis auf auf das deutsche Datumsformat war der Schlüssel. Dumm das ich das nicht beachtet habe.
Beim SQLServer kann man sich da ziemlich einfach behelfen. Mit einem führenden 'set langauge german ' im SQLStatement kann der SQLServer auf deutsches Datumsformat für das Statement geschaltet werden.
Dann klappt's auch mit dem deutschen Datum...
Vielen Dank und Gruß,
Karl
Nur ist das der komplett falsche Weg.
Tu dir einen gefallen und mach es richtig und benutze nicht solche Frickellösungen.
Übergebe dem Parameter einen Datetime den Du geparsed hast.
Und vorsorglich, damit wir auch über die selben Parameter reden:
[Artikelserie] SQL: Parameter von Befehlen