Konvertieren von "datetime" in "Monatsname TAG,JAHR"

Ich habe eine datetime Feld und was zu konvertieren auf "Monatsname TAG, JAHR" - format.

Beispielsweise das folgende Datum:

2013-01-16 00:00:00.000

wird zu konvertieren:

January 16,2013

Ich Tue dies mit der folgenden Anweisung:

CAST(DATENAME(MONTH,DateTime) AS VARCHAR(12)) + ' ' + CAST(DATEPART(DAY,DateTime) AS VARCHAR(2)) + ','+ CAST(YEAR(DateTime) AS VARCHAR(4))

Wie Sie sehen können ich bin über separate Datums-Funktion für jeden Teil des datetime-Wertes und Konvertierung in string, um zu verketten, es mit den anderen teilen.

Ist es ein klarer und schneller Weg, mit nur verdeckte/cast-Funktion?

  • Generell sollten Sie versuchen, diese Formatierung so nahe am Nutzer wie möglich - wenn dies passieren werde durch anderen code, ich würde empfehlen, es als datetime und lassen Sie die anderen code verwenden (in der Regel weit besser) string-Formatierung Einrichtungen.
  • Ich kann Zustimmen, dass mehr Freiheit für den Programmierer übernehmen für Sie die Ergebniszeile gesetzt aus der SQL, aber in einigen Fällen, wenn die Ausgabe ist streng definiert ich lieber zum formatieren der Daten in SQL-soweit möglich und (in meinem Fall) zu verwenden, javascript/html, nur um zu Rendern.
  • Die Beratung ergibt sich aus der großen Zahl von Fällen, in denen (irgendwie) Menschen haben beschlossen, dass der beste Weg, um mit "Probleme mit der Formatierung" mit datetimes ist, konvertieren Sie Sie in strings (und wenn, dann oft, konvertieren Sie Sie zurück in datetime-Werte höher) - ohne zu erkennen, dass die "Formatierung Probleme" ergeben sich erst, sobald Sie mit der Behandlung beginnen, die datetime-Daten als strings in den ersten Platz.
InformationsquelleAutor gotqn | 2013-06-18
Schreibe einen Kommentar