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

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

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

Тази статия демонстрира как да използвате T-SQL за задаване на текущата езикова среда в SQL Server.

Синтаксис

Синтаксисът за настройка на текущия език е следният:

SET LANGUAGE { [ N ] 'language' | @language_var }

Където [N]'language' | @language_var е името на езика, както е съхранено в sys.syslanguages изглед за съвместимост на системата. Този аргумент може да бъде или Unicode, или DBCS, конвертиран в Unicode.

За да посочите език в Unicode, използвайте N „език“. Ако е посочена като променлива, променливата трябва да е с sysname тип данни (името на системата типът данни се използва за колони на таблица, променливи и параметри на съхранените процедури, които съхраняват имена на обекти).

Пример 1 – Задаване на език

Ето пример за настройка на британски език за текущата сесия:

SET LANGUAGE British;

Резултат:

Changed language setting to British.

Ето пример за настройка на езика за текущата сесия на немски:

SET LANGUAGE German;

Резултат:

Die Spracheneinstellung wurde in Deutsch geändert.

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

Пример 2 – Изпълнение на заявка

Промяната на езика влияе върху начина на форматиране на датите. Ето пример, за да покажа какво имам предвид.

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

SET LANGUAGE British;
SELECT CONVERT(date, '09/01/2030') AS 'Convert';

Резултат:

+------------+
| Convert    |
|------------|
| 2030-01-09 |
+------------+
Changed language setting to British.

В този случай датата се превежда като 9 януари.

След това сменяме езика на us_English и изпълнете същата заявка:

SET LANGUAGE us_english;
SELECT CONVERT(date, '09/01/2030') AS 'Convert';

Резултат:

+------------+
| Convert    |
|------------|
| 2030-09-01 |
+------------+
Changed language setting to us_english.

Така че в този случай датата беше преведена като 1 септември поради новите езикови настройки.

Задаване на езика на ниво заявка

Някои функции на T-SQL ви позволяват да посочите език/култура, която да се използва на ниво заявка. Например, PARSE() приема незадължителен аргумент, който се използва, за да определи как е форматиран предоставеният низ. Това ви позволява да настроите езика/културата да се използва само в рамките на тази заявка (и дори различни части от заявката), без да е необходимо да променяте езиковите настройки за текущата сесия.

Ето пример, за да демонстрирам какво имам предвид:

SELECT 
    PARSE('01/06/2018' AS date USING 'en-US') AS 'en-US',
    PARSE('01/06/2018' AS date USING 'en-GB') AS 'en-GB';

Резултат:

+------------+------------+
| en-US      | en-GB      |
|------------+------------|
| 2018-01-06 | 2018-06-01 |
+------------+------------+

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

Намерете текущия език

Можете да изпълните следния оператор, за да върнете езика, който се използва в момента:

SELECT @@LANGUAGE;

За повече опции вижте 3 начина за получаване на езика на текущата сесия в SQL Server (T-SQL).

Намерете наличните езици

Можете да изпълните следния код, за да върнете списък с налични езици:

EXEC sp_helplanguage;

Това връща списък с всички езици.

За да го стесните до конкретен език, добавете името на езика. Като това:

EXEC sp_helplanguage Spanish;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Изследване на форматите за дата на Postgres и техните различни функции

  2. Въведение в защитата на ниво ред в SQL Server

  3. Вземете списък с пощенски акаунти в базата данни в SQL Server (T-SQL)

  4. Двусмислена грешка в името на колоната на един конкретен сървър

  5. SYSUTCDATETIME() срещу GETUTCDATE() в SQL Server:Каква е разликата?