Когато работите с дати в SQL Server, е лесно да се сблъскате с различни формати за дата. Например някой от САЩ може да помисли за 01.07.2018 означава 7 януари, но някой от Обединеното кралство може да смята, че означава 1 юли.
В много случаи може дори да не знаете кой формат на датата се използва за конкретен език/култура. За щастие SQL Server съхранява тази информация в своята база данни с ресурси и можете да я извлечете, като използвате някой от двата метода по-долу.
Метод 1:Съхранената процедура sp_helplanguage
sp_helplanguage
съхранената процедура връща информация за конкретен алтернативен език или за всички езици в SQL Server. Това включва името на езика, неговия псевдоним и формата на датата и имената на месеците, свързани със съответния език.
За да върнете информация за всички езици в SQL Server, изпълнете следното:
EXEC sp_helplanguage;
Това връща доста голям набор от резултати. Ето пълния списък с езици, които получавам, когато го стартирам на моя екземпляр на SQL Server 2017.
Ако не искате всички езици да бъдат върнати, можете да го ограничите до конкретен език.
Ето един пример:
EXEC sp_helplanguage испански;
Ето резултата, когато го стартирам в mssql-cli:
-[ ЗАПИС 1 ]-------------------------------есен | 5формат на дата | dmydatefirst | 1 надстройка | 0име | Испански | Испански месеци | Enero,Febrero,Marzo,Abril,Mayo,Junio,Julio,Agosto,Septiembre,октомври кратки месеци | Ене, февруари, март, абр, май, юни, юли, преди, септември, окт, ноември, ден дни | Lunes,Martes,Miércoles,Jueves,Viernes,Sábado,Domingolcid | 3082msglangid | 3082
Можете също да използвате @@LANGUAGE
за да го стесните до какъвто и да е текущият ви език. Пример:
EXEC sp_helplanguage @@LANGUAGE;
Резултат:
-[ ЗАПИС 1 ]-------------------------------есен | 0формат на дата | mdydatefirst | 7надстройка | 0име | us_englishalias | Английски месеци | Януари,февруари,март,април,май,юни,юли,август,септември,октомври кратки месеци | Януари, февруари, март, април, май, юни, юли, август, септември, октомври, ноември, дек. Понеделник, Вторник, Сряда, Четвъртък, Петък, Събота, Неделяlcid | 1033msglangid | 1033
Метод 2:Изгледът sys.syslanguages
Вторият начин, по който можете да върнете информацията за езика, е като отидете направо в sys.syslanguages
изглед за съвместимост на системата. Това е изгледът, от който горната съхранена процедура получава информацията си.
Ето как да направите заявка за този изглед:
ИЗБЕРЕТЕ * ОТ sys.syslanguages;
Можете също да го стесните до език, като добавите WHERE
клауза:
SELECT * FROM sys.syslanguagesWHERE name ='Español';
Имайте предвид, че всеки езиков запис има име и псевдоним. Горната заявка може да бъде пренаписана, за да използва псевдонима:
SELECT * FROM sys.syslanguagesWHERE псевдоним ='Испански';
Както вероятно можете да кажете, е много по-лесно да използвате съхранената процедура (1-ва опция), но този изглед може да е удобен, ако искате да се върне само подмножество от колони.
Например:
ИЗБЕРЕТЕ име, псевдоним, формат на дата FROM sys.syslanguagesWHERE alias ='испански';
Резултат:
<пред>+--------+--------+--------------+| име | псевдоним | формат на дата ||---------+--------+--------------|| Español | испански | dmy |+--------+--------+--------------+