Das ist der Kern der Verwirrung. Nur weil SQL Server Management Studio angezeigt wird eine datetime-Spalte in diesem Format bedeutet nicht, dass sie als TEXT YYYY-MM-DD hh:mm:ss.zzz gespeichert wird. Es wird als Binärdatei gespeichert, etwa 0000101000001010..
Ihre Daten werden in SQL Server als eine Reihe von Bytes (eigentlich Bits) gespeichert, die einen numerischen Wert bilden, der ein Offset von 1900-01-01 ist. Es gibt kein inhärentes Format für die Daten. Worauf Sie sich beziehen, ist, dass SSMS standardmäßig [Anzeige] datetime-Spalten als YYYY-MM-DD hh:mm:ss.zzz anzeigt. Wenn Sie ein Front-End-Programmiertool verwenden, kann auch dieses ein Standard-[Anzeige]-Format festlegen, sofern Sie nicht um ein anderes gebeten haben.
Es gibt absolut KEINE Möglichkeit, SSMS durch Optionen oder Konfiguration dazu zu bringen, Datetime-Daten in einem anderen Format anzuzeigen. Gegebenenfalls müssten Sie die SQL-Abfrage aktualisieren, um die datetime-Spalte in eine VARCHAR-Spalte zu konvertieren, die das TEXTual-Äquivalent in einem bestimmten Format enthält. Das kann in SSMS nützlich sein, wäre aber schlecht, wenn es als Datenquelle für Front-End-GUI/Web-Apps verwendet wird - da die Werte nicht datetime sind und nicht für Intervallberechnungen, Grafiken, gebundene Datumssteuerungen usw. verwendet werden können.
Sehen Sie sich dieses Beispiel der Zeitanzeige (getdate()) als JJJJ-TT-MM an, ein sehr ungewöhnliches Format. Beachten Sie, dass das Datumsfeld/die Datumsvariable zweimal verwendet werden muss:
select stuff(convert(char(7), getdate(), 120), 5, 0, '-' + convert(char(2), getdate(), 3))