SQL - Die Konvertierung eines Varchar-Datentyps in einen Datetime-Datentyp führte zu einem Wert außerhalb des Bereichs
Habe ich immer die folgende Fehlermeldung beim ausführen einer SQL zu konvertieren meiner Daten Typ Wert aus varchar
zu datetime
.
Msg 242, Ebene 16, Status 3, Zeile 1
Die Konvertierung eines varchar-Datentyps in einen datetime-Datentyp führte zu einer out-of-range-Wert.
Habe ich die Daten geprüft und kann nicht sehen, dass etwas ungerade: Ran an die folgenden Prüfungen und alle Rückkehr keine Ergebnisse
SELECT [Date] from table where [DATe] is null
SELECT [Date] from table where [DATe] = ''
SELECT [Date] from table where LEN([date])> 10
SELECT [Date] from table where LEN([date])< 10
SELECT top 100 [Date] , SUBSTRING([date],4,2) from [table where convert(int, SUBSTRING([date],4,2)) < 1 or convert(int, SUBSTRING([date],4,2)) > 12
SELECT top 100 [Date] , SUBSTRING([date],1,2) from table where convert(int, SUBSTRING([date],4,2)) < 1 or convert(int, SUBSTRING([date],4,2)) > 31
Was gibt es sonst noch einen Blick Wert und vielleicht Wert, einen Zeiger oder helfen mit diesem Problem? Kann nicht scheinen, um Sie unten.
Kommentar zu dem Problem
Was ist der Datentyp der Spalte Datum? Könnten Sie mir zeigen das schema für die Tabelle, und die Aussage, dass der Fehler tritt auf, bitte?
welche der sechs SQL-Anweisungen, die Sie zur Verfügung gestellt nicht?
Die sechs Aussagen, die alle an die Arbeit und stellen Sie sicher keine Probleme mit den Daten.
Sie haben nicht geprüft für nicht gültige Datumsangaben z.B. 2013-10-31 oder 2013-02-30. Wahrscheinlich ist der Fehler, den Sie konfrontiert sind, bezieht sich auf die Art der problematischen Termine
Hallo Dalen, ich habe dies getan haben, überprüfen. Die Art der Daten eingerichtet ist, ist 31/10/2013, 30/10/2013. Es ist im UK-format. Wird das irgendwelche Auswirkungen, wenn Sie versuchen zu ändern, ein-Spalte-Typ, glaube nicht, es würde.
InformationsquelleAutor der Frage user23495 | 2013-12-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich habe vor dem gleichen problem, vor einer Woche.
Das problem mit der Zeitzone-Einstellung. Geben Sie an, in andere Formate wie mm/dd/yyyy (funktioniert meistens).
Angabe des Datums als 30/12/2013 zu dem Fehler geführt haben für mich. Jedoch, die Angabe als mm/TT/JJJJ-format gearbeitet.
Wenn Sie brauchen, um konvertieren Sie Ihre Eingabe, die Sie versuchen können, den Blick in die
CONVERT
Methode.Syntax ist
CONVERT(VARCHAR,@your_date_Value,103)
CONVERT(VARCHAR, '12/30/2013', 103)
Finishing 103 ist das datetime-format.
Siehe diesen link für konvertierungsformate und weiter Lesen.
http://www.w3schools.com/sql/func_convert.asp
InformationsquelleAutor der Antwort Mahe
Ich lief in dieses Problem, durch einen dummen Fehler. Stellen Sie sicher, dass das Datum wirklich existiert!
Beispiel:
September 31, 2015 nicht vorhanden.
Also dies fehl mit der Meldung:
Um es zu beheben, geben Sie ein gültiges Datum:
- Und es führt einfach nur gut.
InformationsquelleAutor der Antwort Mr. C
Ich hatte ähnliches Problem vor kurzem. Die regionalen Einstellungen richtig waren, die Einstellung sowohl in-app und Datenbank-server. Allerdings, Ausführung von SQL-führte zu
War das problem der Standardsprache des db-Benutzers.
Überprüfen oder ändern Sie es in SSMS gehen Sie auf Sicherheit -> Anmeldungen und rechts-klicken Sie auf den Benutzernamen des Benutzers, der ausgeführt, Suchanfragen. Wählen Sie Eigenschaften -> allgemein und stellen Sie sicher, dass die default-Sprache an der Unterseite des dialogs ist das, was Sie erwarten.
Wiederholen Sie dies für alle Benutzer, die Abfragen ausführen.
InformationsquelleAutor der Antwort ali
InformationsquelleAutor der Antwort sonu yadav
Können Sie Gebrauch machen von
in Sie sp Funktion oder gespeicherten Prozedur, um Dinge zu erledigen.
InformationsquelleAutor der Antwort Sachin Mishra
Ich habe das gleiche problem und festgestellt, dass dieses Problem tritt auf, weil SQL Server nicht ausführen Vergleiche auf Zeichen, die in Ganzzahlen konvertiert in identischer Weise. In meinem test habe ich festgestellt, dass einige Vergleiche der konvertierten Zeichen, wie das Ausrufezeichen wird return type conversion errors, während andere Vergleiche umgewandelt, Zeichen wie das Leerzeichen, wird bestimmt out of range sein.
Dieser code testet die verschiedenen möglichen Szenarien und präsentiert eine Lösung über verschachtelte REPLACE-Anweisungen. Die ERSETZEN bestimmt, ob alle Zeichen in der Zeichenfolge, die nicht zahlen oder den slash, und, falls vorhanden, wird die Länge der Zeichenkette größer als null ist, wodurch angezeigt wird, dass es "schlechte" Zeichen, und das Datum ist ungültig.
Ausgabe:
InformationsquelleAutor der Antwort RSax
Ich auch auf dieses Problem beim automatischen einfügen eines DATEPART einer Spalte.
Was ich gemacht habe, änderte ich mein system-Datum-format in übereinstimmung mit der SQL server-Datums-format.
z.B.
meine SQL-format mm/dd/yyyy und meine system-format festgelegt wurde, TT/mm/JJJJ.
Ich änderte mein system format mm/TT/JJJJ und Fehler Weg
kb
InformationsquelleAutor der Antwort user5714464
Wie Sie wissen, ist dies Großbritannien-format-Problem.
Sie tun können, Datum-Konvertierung indirekt durch die Verwendung der Funktion.
Zum aufrufen dieser Funktion
Konvertieren es in der Regel zu datetime
In Ihrem Fall, die Sie tun können,
InformationsquelleAutor der Antwort Sumit
Test für Jahr > 2079.
Ich fand, dass ein Benutzer typo ' ed 2106 statt 2016 im Jahr (10/12/2106) und Ausleger; so auf 10/12/2016 ich getestet und SQL-Server akzeptiert bis 2078, fing an zu werfen, dass Fehler, wenn das Jahr 2079 oder höher. Ich habe nicht getan, alle weitere Forschung auf, welche Art von Datums-Schiebe-SQL-Server.
InformationsquelleAutor der Antwort gordon
InformationsquelleAutor der Antwort shashank m
Ich einfach konvertiert das varchar-Feld, das ich wollte zu konvertieren in eine neue Tabelle (mit einem DateTime eingereicht) in einen DateTime-kompatibel-Outs zuerst wir und dann die SQL wird die Konvertierung von varchar in DateTime-ohne Probleme.
In der unten (nicht meine erstellte Tabelle mit diesen Namen !) Ich mache einfach das varchar-Feld, um ein DateTime-lookalike, wenn Sie wollen:
InformationsquelleAutor der Antwort Andre
Nov 12 2016 12:00 , 21/12/2016, 21-12-2016
diese Abfrage Funktioniert für oben zu ändern, um das Format dd/MM/yyyy
SELECT [Member_ID],[Name] ,
Convert(varchar(50),Convert(date,[DOB],103),103) as DOB
,[NICNO],[Relation] FROM [dbo].[tbl_FamilMember]
InformationsquelleAutor der Antwort Khalid
Dieser Fehler für mich, weil ich versucht habe zu speichern, die mindestens das Datum und die Uhrzeit in einer Spalte unter Verwendung des inline-Abfragen direkt aus C# - code.
Die date-variable gesetzt wurde 01/01/0001 12:00:00 UHR in der code-angesichts der Tatsache, dass DateTime in C# initialisiert das Datum und die Uhrzeit, wenn nicht gesetzt, ansonsten. Und möglichst Datum dürfen in der MS-SQL-2008-datetime-Datentyp ist 1753-01-01 12:00:00 UHR.
Änderte ich das Datum aus dem code, und legen Sie es auf 01/01/1900 und keine Fehler gemeldet wurden, weiter.
InformationsquelleAutor der Antwort Talha Imam
Ich verwendet ToString() auf ein Datum mit mm statt MM.
InformationsquelleAutor der Antwort L0uis
Nur stellen Sie sicher, dass Ihre Daten kompatibel sind oder sein können, richtig in Ihrer Datenbank-manager(z.B. SQL Server Management Studio). Zum Beispiel wird die DateTime.Jetzt C# - Funktion ist ungültig, die in SQL server Bedeutung Ihrer Abfrage sind gültige Funktionen wie GETDATE() für SQL Server.
Dieser änderung gearbeitet hat perfekt für mich.
InformationsquelleAutor der Antwort Tonde