sql >> Databáze >  >> RDS >> Sqlserver

Jak najít formát data používaný v aktuální relaci v SQL Server (T-SQL)

Když používáte SQL Server, vaše aktuální připojení obsahuje řadu možností, které určují věci, jako je jazyk, formáty data atd. Ty lze nastavit na jakoukoli výchozí hodnotu, ale lze je také během relace přepsat pomocí SET prohlášení.

Formát data ovlivňuje interpretaci řetězců znaků při jejich převodu na hodnoty data pro uložení v databázi. Když je jazyk nastaven pomocí SET LANGUAGE , je implicitně nastaveno nastavení formátu data. Toto lze explicitně přepsat pomocí SET DATEFORMAT prohlášení.

V každém případě můžete aktuální formát data zjistit pomocí DBCC USEROPTIONS příkaz. Tento příkaz vrátí SET možnosti, které byly nastaveny pro aktuální připojení.

Syntaxe

Syntaxe vypadá takto:

DBCC USEROPTIONS  
[ WITH NO_INFOMSGS ]

Volitelné NO_INFOMSGS argument potlačí všechny informační zprávy, které mají úrovně závažnosti od 0 do 10.

Příklad

Zde je příklad spuštění příkazu a výsledky, které získám na svém aktuálním testovacím počítači:

DBCC USEROPTIONS;

Výsledek:

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

Jak již bylo zmíněno, tyto možnosti můžete změnit pomocí SET prohlášení.

Zde je příklad změny jazyka aktuální relace a opětovného spuštění příkazu:

SET LANGUAGE German;
DBCC USEROPTIONS;

Výsledek:

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

Můžeme tedy vidět, že se nejen změnil jazyk, ale také formát data.

Pokud se však nejedná o požadovaný formát data, lze formát data explicitně změnit pomocí SET DATEFORMAT .

Takhle:

SET DATEFORMAT mdy;
DBCC USEROPTIONS;

Výsledek:

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

A můžeme vidět, že formát data byl změněn podle specifikace, přičemž jazyk zůstal tak, jak je.

Zobrazení sys.dm_exec_requests

Můžete také vrátit formát data používaný v aktuálním požadavku dotazem na sys.dm_exec_requests systémový pohled. Toto zobrazení vrací pěkné velké množství sloupců, ale můžete jej zúžit pouze na ty sloupce, které vás zajímají. V našem případě nás zajímá pouze jeden sloupec – date_format sloupec:

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

Výsledek:

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

Dotaz jsem také zúžil pouze na aktuální požadavek. Udělal jsem to pomocí @@SPID , která vrací ID relace aktuálního uživatelského procesu.


  1. Prozkoumání Java Unit Testing pomocí JUnit Test Framework

  2. Jak nainstalovat phpMyAdmin na jeho vlastní aplikaci

  3. Jak odinstalujete MySQL z Mac OS X?

  4. MySQL zobrazuje indexy v databázi