Khi làm việc với ngày tháng trong SQL Server, bạn rất dễ gặp phải các định dạng ngày tháng khác nhau. Ví dụ:một người nào đó từ Hoa Kỳ có thể xem xét 01/07/2018 có nghĩa là ngày 7 tháng 1, nhưng ai đó từ Vương quốc Anh có thể coi nó có nghĩa là ngày 1 tháng 7.
Trong nhiều trường hợp, bạn thậm chí có thể không biết định dạng ngày tháng nào được sử dụng cho bất kỳ ngôn ngữ / văn hóa cụ thể nào. May mắn thay, SQL Server lưu trữ thông tin này trong cơ sở dữ liệu tài nguyên của nó và bạn có thể truy xuất thông tin đó bằng cách sử dụng một trong hai phương pháp bên dưới.
Phương pháp 1:Thủ tục lưu trữ sp_helplanguage
sp_helplanguage
thủ tục được lưu trữ trả về thông tin về một ngôn ngữ thay thế cụ thể hoặc về tất cả các ngôn ngữ trong SQL Server. Điều này bao gồm tên ngôn ngữ, bí danh và định dạng ngày tháng và tên tháng, được liên kết với ngôn ngữ tương ứng.
Để trả về thông tin cho tất cả các ngôn ngữ trong SQL Server, hãy chạy như sau:
EXEC sp_helplanguage;
Điều này trả về một tập hợp kết quả khá lớn. Đây là danh sách đầy đủ các ngôn ngữ tôi nhận được khi chạy ngôn ngữ đó trên phiên bản SQL Server 2017.
Nếu bạn không muốn trả lại tất cả các ngôn ngữ, bạn có thể thu hẹp ngôn ngữ đó thành một ngôn ngữ cụ thể.
Đây là một ví dụ:
EXEC sp_helplanguage Spanish;
Đây là kết quả khi tôi chạy nó trong mssql-cli:
-[ RECORD 1 ]------------------------- langid | 5 dateformat | dmy datefirst | 1 upgrade | 0 name | Español alias | Spanish months | Enero,Febrero,Marzo,Abril,Mayo,Junio,Julio,Agosto,Septiembre,Octub shortmonths | Ene,Feb,Mar,Abr,May,Jun,Jul,Ago,Sep,Oct,Nov,Dic days | Lunes,Martes,Miércoles,Jueves,Viernes,Sábado,Domingo lcid | 3082 msglangid | 3082
Bạn cũng có thể sử dụng @@LANGUAGE
để thu hẹp nó xuống bất kể ngôn ngữ hiện tại của bạn là gì. Ví dụ:
EXEC sp_helplanguage @@LANGUAGE;
Kết quả:
-[ RECORD 1 ]------------------------- langid | 0 dateformat | mdy datefirst | 7 upgrade | 0 name | us_english alias | English months | January,February,March,April,May,June,July,August,September,Octobe shortmonths | Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec days | Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday lcid | 1033 msglangid | 1033
Phương pháp 2:Chế độ xem sys.syslanguages
Cách thứ hai bạn có thể trả lại thông tin ngôn ngữ là truy cập thẳng vào sys.syslanguages
chế độ xem tương thích hệ thống. Đây là dạng xem mà thủ tục được lưu trữ ở trên lấy thông tin của nó.
Đây là cách truy vấn chế độ xem này:
SELECT * FROM sys.syslanguages;
Bạn cũng có thể thu hẹp nó thành một ngôn ngữ bằng cách thêm WHERE
mệnh đề:
SELECT * FROM sys.syslanguages WHERE name = 'Español';
Lưu ý rằng mỗi mục nhập ngôn ngữ có một tên và một bí danh. Truy vấn trên có thể được viết lại để sử dụng bí danh:
SELECT * FROM sys.syslanguages WHERE alias = 'Spanish';
Như bạn có thể nói, sử dụng quy trình được lưu trữ (tùy chọn đầu tiên) dễ dàng hơn nhiều, nhưng chế độ xem này có thể hữu ích nếu bạn chỉ muốn một tập hợp con các cột được trả về.
Ví dụ:
SELECT name, alias, dateformat FROM sys.syslanguages WHERE alias = 'Spanish';
Kết quả:
+---------+---------+--------------+ | name | alias | dateformat | |---------+---------+--------------| | Español | Spanish | dmy | +---------+---------+--------------+