Ich habe eine Menge Daten in varchar
wie folgt:
Wie konvertiere ich sie in ein Datumsformat wie dieses:
%Vor%Ich habe versucht, dies zu verwenden:
%Vor%Aber erhalten Sie diese Nachricht:
Nachricht 241, Ebene 16, Status 1, Zeile 2
Konvertierung fehlgeschlagen beim Konvertieren von Datum und / oder Uhrzeit aus Zeichenkette.
Der Fehler tritt auf, weil Sie (oder wer auch immer diese Tabelle entworfen hat) have a bunch of dates in VARCHAR
. Warum speichern Sie (oder wer auch immer diese Tabelle entworfen hat) Daten als Zeichenfolgen? Haben Sie (oder wer auch immer diese Tabelle entworfen hat) auch Gehalt und Preise und Entfernungen als Strings gespeichert?
Um die Werte zu finden, die Probleme verursachen (so dass Sie (oder wer auch immer diese Tabelle entworfen hat) diese beheben können):
%Vor%Wetten, dass Sie mindestens eine Reihe haben. Fix diese Werte und dann FIX THE TABLE. Oder fragen Sie, wer den Tisch entworfen hat, um den Tisch zu reparieren. Wirklich schön.
%Vor% Jetzt müssen Sie sich keine Gedanken über die Formatierung machen - Sie können immer als YYYYMMDD
oder YYYY-MM-DD
auf dem Client formatieren oder CONVERT
in SQL verwenden. Wenn Sie ein gültiges Datum als Zeichenfolgenliteral haben, können Sie Folgendes verwenden:
... aber das ist besser auf dem Client (wenn überhaupt).
Es gibt einen populären Begriff - Müll drin, Müll raus. Sie werden niemals in der Lage sein, in ein Datum zu konvertieren (egal, ob Sie in eine Zeichenkette in einem bestimmten Format konvertieren), wenn Ihre Datentypauswahl (oder die Datentypauswahl desjenigen, der die Tabelle entworfen hat) inhärent ist ermöglicht Müll in Ihren Tisch. Bitte repariere es. Oder fragen Sie, wer auch immer den Tisch entworfen hat (nochmal, wirklich schön), um es zu reparieren.
Verwenden Sie SELECT CONVERT(date, '20140327')
In Ihrem Fall
%Vor%Tags und Links sql sql-server sql-server-2008-r2