Analysiere ein Datum aus unformatiertem Text in SQL

7

Ich versuche, einen eleganten Weg zu finden, um ein Datum aus einer Textspalte zu erhalten, die Daten wie dieses "JJJJMMTT" enthält ... also könnten wir "20060508" als Wert in der Spalte sehen, den ich möchte von einer Abfrage als Datum (8. Mai 2006) zurückkehren zu können.

Ich bin mir sicher, dass ich bei genügend Zeit etwas zusammenhacken kann, aber die Herangehensweisen, an die ich denke, scheinen ziemlich klugig zu sein, und ich vermute, dass dies in einer einzigen Abfrage elegant gemacht werden kann.

Irgendwelche Vorschläge?

    
Beska 11.09.2009, 14:04
quelle

4 Antworten

23

Dies ist bereits ein gültiges Datum - ISO-8601-Format - verwenden Sie einfach:

%Vor%

oder alternativ:

%Vor%

und das sollte gut gehen!

Um Ihre "08. Mai 2006" -Anzeige zu erhalten, führen Sie eine andere Konvertierung in varchar durch, indem Sie den Datumskonvertierungsstil 107 verwenden:

%Vor%

Siehe hier für weitere Informationen zum Casting & amp; Konvertierung in MS SQL

    
marc_s 11.09.2009, 14:07
quelle
2
%Vor%

gibt Ihnen dieses Ergebnis ...

%Vor%

Siehe hier für weitere Informationen zum Casting & amp; Konvertierung in MS SQL.

Wenn Sie versuchen, ein bestimmtes Format zu erreichen (8. Mai 2006), sollten Sie nur die Spalte als Datetime-Wert zurückgeben und alles, was diesen Wert anzeigen soll, dem Endbenutzer (Website, Client-App , Bericht, usw.) die Formatierung vornehmen. Wenn Sie es bei der Abfrage formatieren, geben Sie eine Zeichenfolge zurück, die es in Zukunft schwieriger macht, Formate aus Ihrem Frontend auszutauschen. Wenn Sie es in SQL machen wollen - überprüfen Sie das Format 107 im obigen Link.

    
Scott Ivey 11.09.2009 14:08
quelle
1

Kein Schwitzen, nur CONVERT es. Style "112", oder ISO würde Ihren Beispielfall behandeln.

%Vor%

gibt

zurück %Vor%     
Chris McCall 11.09.2009 14:10
quelle
1

versuchen:

%Vor%

Ausgabe:

%Vor%     
KM. 11.09.2009 14:10
quelle

Tags und Links