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?
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
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.
Kein Schwitzen, nur CONVERT es. Style "112", oder ISO würde Ihren Beispielfall behandeln.
%Vor%gibt
zurück %Vor%Tags und Links sql sql-server tsql