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

Как да намерите форматите за дата, използвани за конкретен език в SQL Server (T-SQL)

Когато работите с дати в 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 |+--------+--------+--------------+
  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Изчисляване на текущото общо с клауза OVER и клауза PARTITION BY в SQL Server

  2. Съкращаване на SQL Server и ограничение 8192

  3. pyodbc не може да се свърже с базата данни

  4. Как мога да търся всички колони в таблица?

  5. Използвайте FILE_NAME(), за да върнете логическото име на файл за даден идентификатор на файл в SQL Server