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

So finden Sie das Datumsformat, das in der aktuellen Sitzung in SQL Server (T-SQL) verwendet wird

Wenn Sie SQL Server verwenden, enthält Ihre aktuelle Verbindung eine Reihe von Optionen, die Dinge wie Sprache, Datumsformate usw. festlegen. Diese können auf den Standardwert eingestellt werden, aber sie können auch während der Sitzung mit einem SET Aussage.

Das Datumsformat wirkt sich auf die Interpretation von Zeichenfolgen aus, wenn sie in Datumswerte konvertiert werden, um sie in der Datenbank zu speichern. Wenn die Sprache mit SET LANGUAGE eingestellt wird , wird die Datumsformateinstellung implizit entsprechend gesetzt. Dies kann explizit mit dem SET DATEFORMAT überschrieben werden Aussage.

In jedem Fall können Sie das aktuelle Datumsformat finden, indem Sie die DBCC USEROPTIONS verwenden Befehl. Dieser Befehl gibt den SET zurück Optionen, die für die aktuelle Verbindung eingestellt wurden.

Syntax

Die Syntax lautet wie folgt:

DBCC USEROPTIONS  
[ WITH NO_INFOMSGS ]

Der optionale NO_INFOMSGS Argument unterdrückt alle Informationsmeldungen mit Schweregraden von 0 bis 10.

Beispiel

Hier ist ein Beispiel für die Ausführung des Befehls und die Ergebnisse, die ich auf meinem aktuellen Testcomputer erhalte:

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 |
+-------------------------+----------------+

Wie bereits erwähnt, können Sie diese Optionen mit SET ändern Aussagen.

Hier ist ein Beispiel für das Ändern der Sprache der aktuellen Sitzung und das erneute Ausführen des Befehls:

SET LANGUAGE German;
DBCC USEROPTIONS;

Ergebnis:

+-------------------------+----------------+
| Set Option              | Value          |
|-------------------------+----------------|
| textsize                | -1             |
| language                | Deutsch        |
| dateformat              | dmy            |
| datefirst               | 1              |
| 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 |
+-------------------------+----------------+
Die Spracheneinstellung wurde in Deutsch geändert.

Wir können also sehen, dass sich nicht nur die Sprache geändert hat, sondern auch das Datumsformat.

Sollte dies jedoch nicht das gewünschte Datumsformat sein, kann das Datumsformat explizit mit SET DATEFORMAT geändert werden .

So:

SET DATEFORMAT mdy;
DBCC USEROPTIONS;

Ergebnis:

+-------------------------+----------------+
| Set Option              | Value          |
|-------------------------+----------------|
| textsize                | -1             |
| language                | Deutsch        |
| dateformat              | mdy            |
| datefirst               | 1              |
| 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 das Datumsformat wie angegeben geändert wurde, während die Sprache unverändert gelassen wurde.

Die sys.dm_exec_requests-Ansicht

Sie können auch das in der aktuellen Anfrage verwendete Datumsformat zurückgeben, indem Sie die sys.dm_exec_requests abfragen Systemansicht. Diese Ansicht gibt eine schöne Menge Spalten zurück, aber Sie können sie auf die Spalten einschränken, die Sie interessieren. In unserem Fall interessiert uns nur eine Spalte – das date_format Spalte:

SELECT r.date_format
FROM master.sys.dm_exec_requests r
WHERE r.session_id = @@SPID;

Ergebnis:

+---------------+
| date_format   |
|---------------|
| mdy           |
+---------------+

Ich habe die Abfrage auch auf die aktuelle Anfrage eingegrenzt. Ich tat dies, indem ich @@SPID verwendete , die die Sitzungs-ID des aktuellen Benutzerprozesses zurückgibt.