Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Welche Einstellungen stellen das standardmäßige Datetime-Format von SQL Server bereit?

Tu das nicht! Verwenden Sie keine Zeichenfolgen anstelle von Datumsangaben und verwenden Sie kein kulturspezifisches Datums- oder Datetime-Format, das ist ein Rezept für eine Katastrophe.

SQL Server hat kein "Datumsformat", sondern nur Formate, die zum Konvertieren von Datumsangaben in und aus Zeichenfolgen verwendet werden. Einer davon ist der Standardwert, der von der Sortierung des Servers gesteuert wird. Auf eine bestimmte Sortierung können Sie weder vertrauen noch sollten Sie sich verlassen, daher sollten Sie Konvertierungen nach Möglichkeit vermeiden. Darüber hinaus kann das Übergeben eines Zeichenfolgenwerts verhindern, dass SQL Server Indizes für Datumsspalten verwendet, da er die Zeichenfolge in den zugrunde liegenden Spaltentyp konvertieren müsste.

Es ist viel einfacher und sicherer, Datumsangaben als datumstypisierte Variablen oder Parameter zu übergeben. Auf diese Weise vermeiden Sie das gesamte Konvertierungs-Chaos von und nach SQL-Injection-Angriffen.

Es gibt keinen Grund, Zeichenfolgen anstelle von Daten an den Server zu übergeben. Alle SQL Server-Clients (einschließlich ADO.NET) ermöglichen die Ausführung parametrisierter Abfragen. ORMs wie NHibernate und Entity Framework generieren auch parametrisierte Abfragen für datumstypisierte Spalten.

Wenn Sie ein Zeichenfolgenliteral erstellen müssen, verwenden Sie eines der unveränderlichen Formate wie 20140913 oder 2012-11-07T18:26:20

Sie können mehr darüber unter Writing International T-SQL Statements lesen