Konvertiere JJJJMMTT in DATUM

7

Ich habe eine Menge Daten in varchar wie folgt:

%Vor%

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.

    
screechOwl 09.03.2013, 23:56
quelle

3 Antworten

16

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:

%Vor%

... 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.

    
Aaron Bertrand 10.03.2013, 00:08
quelle
6

Verwenden Sie SELECT CONVERT(date, '20140327')

In Ihrem Fall

%Vor%     
user1400641 27.03.2014 10:11
quelle
-1

In Ihrem Fall sollte es sein:

%Vor%     
user3590035 29.09.2015 17:49
quelle