Може би знаете, че когато се свържете със SQL Server, езикът за тази сесия обикновено се определя от вашето влизане. Когато се създаде вход, той получава език по подразбиране.
Езикът на сесията определя дата и час формати и системни съобщения.
Въпреки че със сигурност можете да промените езика по подразбиране за вход, можете също да замените езика по подразбиране в рамките на сесия, ако е необходимо. Можете да превключвате напред и назад между езиците, ако е необходимо. Или дори можете да отворите две отделни връзки и да приложите различен език към всяка от тях.
Тази статия обяснява как да промените езика в рамките на сесия.
ЗАДАДЕТЕ ЕЗИК
SET LANGUAGE
оператор ви позволява да зададете езиковата среда за текущата сесия.
Ето един пример.
SET LANGUAGE British;
Това определя текущия език на британски.
Мога да потвърдя това със следната заявка.
SELECT @@LANGUAGE;
Резултат:
British
Формати за дата
Трябва да знаете, че промяната на езика в рамките на сесия също променя формата на датата.
Ето още една заявка, която да илюстрира това.
DBCC USEROPTIONS;
Резултат:
+-------------------------+----------------+ | Set Option | Value | |-------------------------+----------------| | textsize | -1 | | language | British | | 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 | +-------------------------+----------------+
Забележете, че dateformat
е dmy
и datefirst
е 1
. Това е в съответствие с британския формат за дата.
Ето какво се случва, ако сменя езика на us_english
.
SET LANGUAGE us_english; ....... DBCC USEROPTIONS; Time: 0.738s Changed language setting to us_english. +-------------------------+----------------+ | 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 | +-------------------------+----------------+
Обърнете внимание, че форматът на датата е имплицитно променен, за да се придържа към форматирането на датата в САЩ.
Ако намирате това за проблематично, винаги можете да промените формата на датата, без да променяте езика.
Задаване на език на ниво заявка
Някои функции приемат аргумент „култура“, който ви позволява да посочите език, който да използвате само за тази заявка. С други думи, можете да промените езика ad hoc в рамките на заявка, без да е необходимо да променяте езика на текущата си сесия.
Ето един пример.
SET LANGUAGE us_english;
SELECT
FORMAT(GETDATE(), 'd') AS [My Default],
FORMAT(GETDATE(), 'd', 'en-GB') AS [British],
FORMAT(GETDATE(), 'd', 'de-DE') AS [German];
Резултат:
+--------------+------------+------------+ | My Default | British | German | |--------------+------------+------------| | 3/29/2020 | 29/03/2020 | 29.03.2020 | +--------------+------------+------------+
Вземете списък с езици
Можете да изпълните следната заявка, за да получите списък с езици, налични в SQL Server.
EXEC sp_helplanguage;
Можете също да го стесните до конкретен език, като го добавите с името на езика или псевдонима.
EXEC sp_helplanguage Italian;