Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да намерите формата на датата, използван в текущата сесия в SQL Server (T-SQL)

Когато използвате SQL Server, текущата ви връзка включва редица опции, които определят неща като езика, форматите на датата и т.н. Те могат да бъдат зададени на каквото и да е по подразбиране, но те също могат да бъдат отменени по време на сесията с помощта на SET изявление.

Форматът на датата влияе върху тълкуването на символните низове, тъй като те се преобразуват в стойности за дата за съхранение в базата данни. Когато езикът е зададен с помощта на SET LANGUAGE , настройката за формат на датата се задава съответно имплицитно. Това може да бъде изрично отменено с SET DATEFORMAT изявление.

Във всеки случай можете да намерите текущия формат на датата, като използвате DBCC USEROPTIONS команда. Тази команда връща SET опции, които са зададени за текущата връзка.

Синтаксис

Синтаксисът е така:

DBCC USEROPTIONS  
[ WITH NO_INFOMSGS ]

Незадължителният NO_INFOMSGS аргументът потиска всички информационни съобщения, които имат нива на сериозност от 0 до 10.

Пример

Ето пример за изпълнение на командата и резултатите, които получавам на текущата си тестова машина:

DBCC USEROPTIONS;

Резултат:

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

Както споменахме, можете да промените тези опции с SET изявления.

Ето пример за промяна на езика на текущата сесия, след което командата се изпълнява отново:

SET LANGUAGE German;
DBCC USEROPTIONS;

Резултат:

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

Така че можем да видим, че не само езикът се промени, но и форматът на датата.

Въпреки това, ако това не е желания формат на датата, форматът на датата може да бъде изрично променен с помощта на SET DATEFORMAT .

Като това:

SET DATEFORMAT mdy;
DBCC USEROPTIONS;

Резултат:

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

И можем да видим, че форматът на датата е променен, както е посочено, като оставяме езика такъв, какъвто е.

Изгледът sys.dm_exec_requests

Можете също да върнете формата на датата, използван в текущата заявка, като направите заявка sys.dm_exec_requests системен изглед. Този изглед връща хубав голям куп колони, но можете да го стесните само до тези колони, които ви интересуват. В нашия случай се интересуваме само от една колона – date_format колона:

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

Резултат:

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

Освен това стесних заявката само до текущата заявка. Направих това с помощта на @@SPID , който връща идентификатора на сесията на текущия потребителски процес.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Автоматично събиране на данни за промени в схемата на базата данни в MS SQL Server

  2. Как да групирате по месеци от полето Дата с помощта на sql

  3. Свързване на RStudio към SQL Server

  4. Генериране на клас от таблицата на базата данни

  5. 3 начина за конвертиране на десетичен в шестнадесетичен в SQL Server (T-SQL)