sql >> Database >  >> RDS >> Sqlserver

Het datumformaat vinden dat wordt gebruikt in de huidige sessie in SQL Server (T-SQL)

Wanneer u SQL Server gebruikt, bevat uw huidige verbinding een aantal opties die zaken bepalen zoals de taal, datumnotaties, enz. Deze kunnen worden ingesteld op wat de standaard is, maar ze kunnen ook tijdens de sessie worden overschreven door een SET verklaring.

Het datumformaat is van invloed op de interpretatie van tekenreeksen, aangezien deze worden geconverteerd naar datumwaarden voor opslag in de database. Als de taal is ingesteld met SET LANGUAGE , wordt de instelling van het datumformaat impliciet dienovereenkomstig ingesteld. Dit kan expliciet worden overschreven met de SET DATEFORMAT verklaring.

In ieder geval kunt u het huidige datumformaat vinden met behulp van de DBCC USEROPTIONS opdracht. Deze opdracht retourneert de SET opties die zijn ingesteld voor de huidige verbinding.

Syntaxis

De syntaxis gaat als volgt:

DBCC USEROPTIONS  
[ WITH NO_INFOMSGS ]

De optionele NO_INFOMSGS argument onderdrukt alle informatieve berichten met een ernstniveau van 0 tot 10.

Voorbeeld

Hier is een voorbeeld van het uitvoeren van de opdracht en de resultaten die ik krijg op mijn huidige testmachine:

DBCC USEROPTIONS;

Resultaat:

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

Zoals vermeld, kunt u deze opties wijzigen met de SET verklaringen.

Hier is een voorbeeld van het wijzigen van de taal van de huidige sessie en het opnieuw uitvoeren van de opdracht:

SET LANGUAGE German;
DBCC USEROPTIONS;

Resultaat:

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

We kunnen dus zien dat niet alleen de taal is veranderd, maar ook het datumformaat.

Als dit echter niet het gewenste datumformaat is, kan het datumformaat expliciet worden gewijzigd met SET DATEFORMAT .

Zoals dit:

SET DATEFORMAT mdy;
DBCC USEROPTIONS;

Resultaat:

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

En we kunnen zien dat het datumformaat is gewijzigd zoals gespecificeerd, terwijl we de taal laten zoals het is.

De sys.dm_exec_requests-weergave

U kunt ook de datumnotatie retourneren die in het huidige verzoek wordt gebruikt door de sys.dm_exec_requests op te vragen. systeem bekijken. Deze weergave geeft een mooi groot aantal kolommen terug, maar u kunt het beperken tot alleen die kolommen waarin u geïnteresseerd bent. In ons geval zijn we alleen geïnteresseerd in één kolom:de date_format kolom:

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

Resultaat:

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

Ik heb de vraag ook beperkt tot alleen het huidige verzoek. Ik deed dit met behulp van @@SPID , die de sessie-ID van het huidige gebruikersproces retourneert.


  1. Maak een tabel met compressie in SQL Server (T-SQL)

  2. Is er een verschil tussen DateTime in c# en DateTime in SQL-server?

  3. SUBSTRING Commando in SQL:A Primer

  4. Een string toewijzen aan een DB-reeks in Hibernate