Beim Konvertieren von Datum und / oder Uhrzeit aus der Zeichenfolge beim Einfügen von datetime ist die Konvertierung fehlgeschlagen
Ich habe versucht, eine Tabelle erstellen wie folgt vor,
create table table1(date1 datetime,date2 datetime);
Zuerst habe ich versucht, einfügen von Werten wie unten,
insert into table1 values('21-02-2012 6:10:00 PM','01-01-2001 12:00:00 AM');
Es hat Fehler zu sagen,
Nicht konvertieren von varchar in datetime
Dann habe ich versucht unter format als eine von der post vorgeschlagen von unserer stackoverflow,
insert into table1 values(convert(datetime,'21-02-2012 6:10:00 PM',5)
,convert(datetime,'01-01-2001 12:00:00 AM',5));
Aber bin noch immer die Fehlermeldung besagt,
Fehler bei der Konvertierung beim konvertieren von Datum und/oder Uhrzeit aus Zeichenkette
Irgendwelche Vorschläge?
Kommentar zu dem Problem - Öffnen
Fragte und antwortete viele mal, wenn Sie ' D Pflege zu suchen. Sie müssen verwenden Sie einen eindeutigen format (
YYYY-MM-DD NICHT'hh:mm:ss
), oder geben Sie einen korrekten format (5 nicht) @Damien_The_Unbeliever als Sie sagte: ich habe bereits gemäß dieser Beitrag stackoverflow.com/questions/12957635/..., bevor diese Frage zu stellen. Sie bat uns, für die Verwendung von 'insert table1 (approvaldate) values (convert(datetime,'18-06-12 10:34:09 PM',5));' aber es funktioniert nicht
InformationsquelleAutor der Frage Mari | 2013-01-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es viele Formate unterstützt, die von SQL Server finden Sie in der MSDN-Onlinedokumentation auf CAST und CONVERT. Die meisten dieser Formate sind abhängig auf welche Einstellungen Sie haben - daher diese Einstellungen können einige mal - und manchmal nicht.
Den Weg, um dieses Problem zu lösen, ist die Verwendung des (leicht angepasst) ISO-8601 Datum-format, die von SQL Server unterstützt werden - dieses format funktioniert immer - unabhängig von Ihrer SQL Server language-und dateformat-Einstellungen.
Den ISO-8601-format wird unterstützt von SQL Server kommt in zwei Varianten:
YYYYMMDD
nur für Daten (kein Teil); hier der Hinweis: keine Bindestriche!, das ist sehr wichtig!YYYY-MM-DD
ist NICHT unabhängig von der dateformat-Einstellungen in Ihrem SQL Server und NICHT arbeiten in allen Situationen!oder:
YYYY-MM-DDTHH:MM:SS
für Datums-und Zeitangaben - hier der Hinweis: dieses format hat Bindestriche (aber Sie kann weggelassen werden), und eine FesteT
als Trennzeichen zwischen Datum und Zeit Teil IhresDATETIME
.Dies ist gültig für SQL Server 2000 und neuer.
Also in deinem konkreten Fall - verwenden Sie diese Zeichenfolgen:
, und Sie sollten in Ordnung sein (Hinweis: Sie benötigen für die Verwendung des internationalen 24-Stunden - - format anstatt im 12-Stunden-AM/PM-format).
Alternativ: wenn Sie auf SQL Server 2008 oder neuer verwenden, können Sie auch die
DATETIME2
Datentyp (anstelle der einfachenDATETIME
) und Ihre aktuelleINSERT
würde nur funktionieren ohne Probleme! 🙂DATETIME2
ist viel besser und viel weniger wählerisch auf conversions und empfehlen den Datentyp Datum/Uhrzeit-Typen für SQL Server 2008 oder neuere sowieso.Frag mich nicht warum, dieses ganze Thema ist so schwierig und etwas verwirrend - das ist einfach so wie es ist. Aber mit der
YYYYMMDD
format, Sie sollten in Ordnung sein, für jede version von SQL Server und für alle language-und dateformat-Einstellungen in Ihrem SQL Server.InformationsquelleAutor der Antwort marc_s
Die Konvertierung in SQL server fehlschlägt, manchmal nicht, weil das Datum oder die Uhrzeit-Formate verwendet, Es ist Nur, weil Sie versuchen, zu speichern falsche Daten, die nicht akzeptabel ist das system.
Beispiel:
Create Table MyTable (MyDate);
Insert Into MyTable(MyDate) Values ('2015-02-29');
Den SQL-server werfen die folgende Fehlermeldung:
Conversion failed when converting date and/or time from character string.
Den Grund für diesen Fehler ist einfach, es gibt kein solches Datum (Feb-29) Jahr (2015).
InformationsquelleAutor der Antwort Ashraf Abusada
Einfache Antwort - 5 ist Italienisch "yy" und 105 italienische "yyyy". Daher:
einwandfrei funktionieren wird, aber
wird Fehler geben.
Ebenso
wird Fehler geben, wo, wie
arbeiten.
InformationsquelleAutor der Antwort Raj
Wann immer möglich sollte man vermeiden, Kultur bestimmten Datum/Uhrzeit-Literale.
Gibt es einige sichere - Formate, um eine Datum - /Zeit-als Literale:
Alle Beispiele für
2016-09-15 17:30:00
ODBC (mein Liebling, wie ist es behandelt, wie der real Typ sofort)
{ts'2016-09-15 17:30:00'}
--Zeitstempel{d'2016-09-15'}
--Datum nur{t'17:30:00'}
--Zeit nurNach ISO8601 (das beste für überall)
'2016-09-15T17:30:00'
--bewusst sein, dieT
in der Mitte!Unseperated (winzige Gefahr, falsch interpretiert als Zahl)
'20160915'
--nur für Reine DatumGut im Auge zu behalten: Ungültige Datums-neigen dazu, zu zeigen, mit merkwürdige Fehler
Ein Grund mehr für die seltsame Umwandlung Fehler: die Reihenfolge der Ausführung!
SQL-Server ist gut zu wissen, Dinge zu tun, die in eine Reihenfolge der Ausführung, die man vielleicht nicht erwartet haben. Ihre schriftliche Anweisung sieht wie die Konvertierung abgeschlossen ist vor irgendeiner Art im Zusammenhang Aktion erfolgt, sondern die engine entscheidet - warum immer - zu tun, die Umwandlung in einem späteren Schritt.
Hier ist ein großer Artikel erläutert dies mit Beispielen: Rusano.com: "t-sql-Funktionen-tun-nicht-implizieren-eine-bestimmte-um-Ausführung" und hier ist die damit verbundene Frage.
InformationsquelleAutor der Antwort Shnugo
ist die beste Möglichkeit, diesen code
InformationsquelleAutor der Antwort Ahmed Soliman Flasha
Nur aktualisieren Sie das Datum im format wie Balg
Er löst das problem für mich und es funktioniert
InformationsquelleAutor der Antwort Pronab Roy
InformationsquelleAutor der Antwort ARLE ANDINO
Bitte Versuchen Sie dies.
SQL-Server erwartet Daten in MM/DD/YYYY format,Wenn Englisch als Standard-Sprache.Hier bin speichern datepicker Wert auf sql2008 Datenbank.Mein Feld-Typ-datetime in der Datenbank.dpdob ist mein datepicker Namen.
Nun verwenden dob in Ihre insert-Abfrage.
InformationsquelleAutor der Antwort SwR
Das datetime-format tatsächlich das läuft auf sql-server ist
InformationsquelleAutor der Antwort Bhavya Dhiman
Können Sie versuchen, diesen code
InformationsquelleAutor der Antwort Biddut
set Culture, Englisch aus dem Internet auf.config-Datei
zum Beispiel, wenn Sie die Kultur auf Arabisch thime werden
22/09/2017 02:16:57 ص
, und Sie erhalten die Fehlermeldung:Fehler bei der Konvertierung beim konvertieren von Datum und/oder Zeit von-Zeichenfolge beim einfügen datetime
InformationsquelleAutor der Antwort Yusuf