Bạn có thể biết rằng khi bạn kết nối với SQL Server, ngôn ngữ cho phiên đó thường được xác định bởi thông tin đăng nhập của bạn. Khi đăng nhập được tạo, nó sẽ được gán một ngôn ngữ mặc định.
Ngôn ngữ phiên xác định ngày giờ định dạng và thông báo hệ thống.
Mặc dù bạn chắc chắn có thể thay đổi ngôn ngữ mặc định cho đăng nhập, nhưng bạn cũng có thể ghi đè ngôn ngữ mặc định trong một phiên nếu cần. Bạn có thể chuyển đổi qua lại giữa các ngôn ngữ nếu được yêu cầu. Hoặc bạn thậm chí có thể mở hai kết nối riêng biệt và áp dụng một ngôn ngữ khác nhau cho mỗi kết nối đó.
Bài viết này giải thích cách thay đổi ngôn ngữ trong một phiên.
ĐẶT NGÔN NGỮ
SET LANGUAGE
cho phép bạn thiết lập môi trường ngôn ngữ cho phiên hiện tại.
Đây là một ví dụ.
SET LANGUAGE British;
Điều đó đặt ngôn ngữ hiện tại thành tiếng Anh.
Tôi có thể xác minh điều này bằng truy vấn sau.
SELECT @@LANGUAGE;
Kết quả:
British
Định dạng ngày
Bạn nên biết rằng việc thay đổi ngôn ngữ trong một phiên cũng làm thay đổi định dạng ngày.
Đây là một truy vấn khác để minh họa điều này.
DBCC USEROPTIONS;
Kết quả:
+-------------------------+----------------+ | 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 | +-------------------------+----------------+
Lưu ý rằng dateformat
là dmy
và datefirst
là 1
. Điều này phù hợp với định dạng ngày của Anh.
Đây là những gì sẽ xảy ra nếu tôi thay đổi ngôn ngữ thành 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 | +-------------------------+----------------+
Lưu ý rằng định dạng ngày được thay đổi hoàn toàn để tuân theo định dạng ngày của Hoa Kỳ.
Nếu bạn thấy vấn đề này có vấn đề, bạn luôn có thể thay đổi định dạng ngày tháng mà không cần thay đổi ngôn ngữ.
Đặt ngôn ngữ ở cấp độ truy vấn
Một số hàm chấp nhận đối số “culture” cho phép bạn chỉ định ngôn ngữ chỉ sử dụng cho truy vấn đó. Nói cách khác, bạn có thể thay đổi ngôn ngữ đặc biệt trong một truy vấn mà không cần thay đổi ngôn ngữ của phiên hiện tại của bạn.
Đây là một ví dụ.
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];
Kết quả:
+--------------+------------+------------+ | My Default | British | German | |--------------+------------+------------| | 3/29/2020 | 29/03/2020 | 29.03.2020 | +--------------+------------+------------+
Nhận danh sách ngôn ngữ
Bạn có thể chạy truy vấn sau để nhận danh sách các ngôn ngữ có sẵn trong SQL Server.
EXEC sp_helplanguage;
Bạn cũng có thể thu hẹp nó thành một ngôn ngữ cụ thể bằng cách thêm nó bằng tên hoặc bí danh ngôn ngữ.
EXEC sp_helplanguage Italian;