"Out-of-range value" - Fehler beim konvertieren von Datentyp varchar in datetime
Habe ich diesen code
datecreation = todaydate.Substring(6, 4) + todaydate.Substring(3, 2) +
todaydate.Substring(0, 2)
string sql = "insert into Usertable ";
sql += "values(" + mVendid + ", '" + usrname + "','" + usrpass + "', cast('" +
datecreation + "'as DATETIME),'" + createdby + "')";
Das problem ist, wenn es ausgeführt wird, im server-es gibt Fehler. In der Lokalen host oder in SQL server management es ist in Ordnung.
Was zum Teufel ist es nicht zu arbeiten, sobald es ist in die web -
Den Fehler der Konvertierung eines varchar-Datentyps in einen datetime-Daten
geben Sie führte zu einer out-of-range-Wert. Die Anweisung wurde
beendet.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nie verketten von string zu bilden, SQL-Abfragen, verwenden Sie immer parametrisierte Abfrage. Für Ihren code, den Sie verwenden können,
SqlParameter
, mit dem Befehl,. Gibt es statt der UmwandlungDateTime
string und dann Gießen Sie es zurückDateTime
imINSERT
Abfrage , fügen Sie einfach den Wert vonDateTime
Objekt-parameter. Dies wird nicht nur sparen Sie von Sql-Injection, sondern löst auch Probleme wie die, die Sie haben.Etwas wie:
wenn
datecreation
kommt aus einemDateTime
- Objekt, und fügen Sie dann direkt, sonst kann man analysieren, es zuDateTime
Objekt und lassen Sie SQL server behandeln den rest für Sie.Das problem ist, dass du wahrscheinlich server hat verschiedene Spracheinstellungen, die Ihre Maschine.
Um sicherzustellen, dass die Konvertierung funktioniert Sie Convert-Funktion. Volle tutorial hier: http://www.sqlusa.com/bestpractices/datetimeconversion/
BTW erstellen von Abfragen wie verketten von string ist sehr gefährliche Art und Weise. Stattdessen verwenden SqlParamerts. Außerdem der Vorteil der Verwendung dieses Ansatzes ist, dass .NETZ tun die Konvertierung für Sie.
Zunächst alle Benutzer-Parameter (besser, übersichtlicher und sicherer!). Diese zweite Fehler geschieht aufgrund von format-Probleme.
Zunächst seine wirklich eine schlechte Abfrage und ziemlich hacky, du solltest nicht schreiben, Abfrage wie diese
*Verwenden Sie immer Paramaterised Abfragen *
Fehler dort sein könnte, weil Sie konvertieren von text zu datetime. Mögliche Gründe Datetime-nicht wohlgeformt
Dateimte nicht übereinstimmt, um Ihre server-datetime -
Versuchen Sie, drucken Sie den genauen Wert, was seine Erstellung
Überprüfen Sie die Zeitzone des Servers. Wahrscheinlich, dass es eine andere Zeitzone auf Ihrem lokalen Rechner. Vermeiden Sie das Problem durch die Verwendung von Parametern.