Ich muss Datetime-Felder in einen speziell formatierten INT-Typ konvertieren. Zum Beispiel möchte ich
2000-01-01 00:00:00.000
in 20010101
konvertieren.
Was ist der performanteste Weg, diese Konvertierung für den Vergleich in einer Abfrage durchzuführen?
Etwas wie:
%Vor%oder
%Vor%Was ist der performanteste Weg, dies zu tun?
Ihr Beispiel von cast(convert(char(8), orderdate, 112) as int)
scheint mir gut zu sein. Das Datum wird schnell auf das benötigte Format heruntergezählt und in ein int umgewandelt.
Aus Sicht des Ausführungsplans scheint es keinen Unterschied zwischen den beiden zu geben.
Wenn Sie "2010-01-01 00: 00: 00.000" direkt in Ihrem Code übergeben, betrachtet die SELECT-Anweisung sie als Zeichenfolge und nicht als Datetime-Datentyp. Es ist nicht dasselbe wie ein Datetime-Feld direkt auszuwählen.
Es ist nicht notwendig, äußere CAST auszuführen, da SQL Server implizite Konvertierung durchführt, hier ist ein Beweis.
%Vor%Tags und Links tsql sql-server-2000