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

Променете формата на датата за текущата сесия в SQL Server

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

Форматът на датата обикновено се определя от вашия език по подразбиране. Например, ако вашият език по подразбиране е us_english , тогава форматът на датата по подразбиране вероятно ще бъде mdy , а първият ден от седмицата ще бъде ден 7 (неделя).

Ако промените езика си, форматът на датата неявно ще бъде съответно актуализиран.

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

Пример

Първо, нека да разгледаме текущите настройки.

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

Така че моят текущ език е us_english и форматът на датата е mdy .

Нека променим формата на датата и да проверим отново.

SET DATEFORMAT dmy;
DBCC USEROPTIONS;

Резултат:

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

Така че успешно промених формата на датата, без да променям езика. Въпреки това, datefirst остава същото. Ако искате да промените datefirst стойност, използвайте SET DATEFIRST .

SET DATEFIRST 1;
DBCC USEROPTIONS;

Резултат:

 
+-------------------------+----------------+
 | Set Option              | Value          |
 |-------------------------+----------------|
 | textsize                | -1             |
 | language                | us_english     |
 | 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 |
 +-------------------------+----------------+ 

В този случай промених първия ден от седмицата да бъде ден 1, който е понеделник.

Нулирайте го обратно

Задаването на езика ще зададе имплицитно dateformat и datefirst настройките обратно към техните стойности по подразбиране за този език (дори ако нулирате езика до текущия език).

Така че в моя случай мога да нулирам езика на us_english , и също така ще нулира стойностите на формата на датата.

SET LANGUAGE us_English;
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 |
 +-------------------------+----------------+ 

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Използване на условие if във вмъкнат SQL Server

  2. Не може да се започне разпределена транзакция

  3. Осигурени данни в T-SQL

  4. Използвайте OBJECTPROPERTY(), за да разберете дали дадена таблица е системна таблица в SQL Server

  5. Таблици на SQL Server:каква е разликата между @, # и ##?