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

So ändern Sie das aktuelle Datumsformat in SQL Server (T-SQL)

Wenn Sie eine Verbindung zu SQL Server herstellen, wird das Datumsformat normalerweise von Ihrer Sprache bestimmt. Die Standardsprache für eine Sitzung ist die Sprache für die Anmeldung dieser Sitzung, es sei denn, sie wird auf Sitzungsbasis durch die Verwendung von Open Database Connectivity (ODBC) oder OLE DB-APIs überschrieben.

Die Einstellung des Datumsformats wirkt sich auf die Interpretation von Zeichenfolgen aus, wenn sie in Datumswerte konvertiert werden, um sie in der Datenbank zu speichern. Es wirkt sich nicht auf die Anzeige von Werten des Datumsdatentyps aus, die in der Datenbank oder im Speicherformat gespeichert sind.

Obwohl die Sprache Ihrer Sitzung das Datumsformat bestimmt, können Sie das Datumsformat bei Bedarf überschreiben. Zum Beispiel, wenn Ihre Sprache us_english ist , ist das Datumsformat mdy (damit 01.07.2018 repräsentiert den 1. Juli und nicht den 7. Januar). Sie können dies so ändern, dass das Datumsformat dmy ist (oder jedes andere Format), während die Sprache us_english bleibt .

Sie können T-SQL verwenden, um das Datumsformat der aktuellen Sitzung explizit festzulegen, indem Sie SET DATEFORMAT verwenden Aussage.

Syntax

So sieht die Syntax aus:

SET DATEFORMAT { format | @format_var }

Wobei format | @format_var ist die Reihenfolge der Datumsteile.

Gültige Werte sind mdy , dmy , ymd , ydm , myd , und dym . Dies können entweder Unicode- oder Double-Byte-Zeichensätze (DBCS) sein, die in Unicode konvertiert wurden.

Beachten Sie jedoch, dass  ydm wird für Datum nicht unterstützt , datetime2 und datetimeoffset Datentypen.

Beispiel

Bevor wir etwas ändern, schauen wir uns die aktuellen Benutzeroptionen an. Dies wird uns sagen, was die aktuelle Sprache ist und das Datumsformat (sowie ein paar andere Dinge):

DBCC USEROPTIONS;

Ergebnis:

+-------------------------+----------------+
| Set Option              | Value          |
|-------------------------+----------------|
| textsize                | -1             |
| language                | us_english     |
| dateformat              | mdy            |
| datefirst               | 7              |
| lock_timeout            | 5000           |
| quoted_identifier       | SET            |
| arithabort              | SET            |
| ansi_null_dflt_on       | SET            |
| ansi_warnings           | SET            |
| ansi_padding            | SET            |
| ansi_nulls              | SET            |
| concat_null_yields_null | SET            |
| isolation level         | read committed |
+-------------------------+----------------+

Wir können sehen, dass die Sprache us_english ist und das Datumsformat ist mdy (das ist das Standarddatumsformat für diese Sprache).

Ändern wir also das Datumsformat und überprüfen Sie dann erneut die Benutzeroptionen:

SET DATEFORMAT dmy;
DBCC USEROPTIONS;

Ergebnis:

 
+-------------------------+----------------+
| Set Option              | Value          |
|-------------------------+----------------|
| textsize                | -1             |
| language                | us_english     |
| dateformat              | dmy            |
| datefirst               | 7              |
| lock_timeout            | 5000           |
| quoted_identifier       | SET            |
| arithabort              | SET            |
| ansi_null_dflt_on       | SET            |
| ansi_warnings           | SET            |
| ansi_padding            | SET            |
| ansi_nulls              | SET            |
| concat_null_yields_null | SET            |
| isolation level         | read committed |
+-------------------------+----------------+

Und wir können sehen, dass sich das Datumsformat geändert hat, während die Sprache gleich geblieben ist.

So ändern Sie also das Datumsformat, ohne die Sprache zu ändern. Wie bereits erwähnt, wird beim Ändern der Sprache implizit gleichzeitig das Datumsformat festgelegt. Wenn Sie dies tun möchten, lesen Sie How to Set the Current Language in SQL Server (T-SQL).