Welcher SQL-Befehl wird empfohlen, um ein Datum in ein yyyymmdd
Format zu konvertieren?
convert(varchar(8), getdate(), 112);
oderconvert(varchar, getdate(), 112)
Ich stelle fest, dass bei Verwendung des zweiten zwei Leerzeichen nach dem Datum angehängt werden. (zB [ 20130705
] - beachte die beiden Leerzeichen nach dem Wert 20130705
)
Wird empfohlen, die erste SQL-Anweisung zu verwenden?
varchar
. An verschiedenen Stellen erhalten Sie unterschiedliche Standardlängen. Als Parameter für eine Prozedur erhalten Sie eine Standardlänge von 1 Zeichen - normalerweise nicht das, was Sie erwarten.Antworten:
Wenn in varD keine Länge für varchar angegeben ist, wird standardmäßig, wie in MSDN dokumentiert , bei Verwendung von CAST oder CONVERT standardmäßig 30 und bei Deklaration als Variable standardmäßig 1 verwendet.
Versuchen Sie Folgendes, um dies zu demonstrieren:
Dies ist sehr gefährlich, da SQL Server den Wert ohne Warnung leise abschneidet und zu unerwarteten Fehlern führen kann.
Wenn Sie jedoch in dem gegebenen Szenario mit oder ohne Länge zu dem betreffenden Thema kommen, macht dies keinen Unterschied zwischen den beiden Aussagen, und ich kann die beiden nachfolgenden Leerzeichen, über die Sie sprechen, nicht sehen. Versuche dies:
Sie werden feststellen, dass die
DATALENGTH()
Funktion in beiden Fällen 8 zurückgibt.Raj
quelle