Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak znaleźć formaty dat używane dla określonego języka w SQL Server (T-SQL)

Podczas pracy z datami w SQL Server łatwo jest potykać się o różne formaty dat. Na przykład ktoś z USA może rozważyć 01/07/2018 oznacza 7 stycznia, ale ktoś z Wielkiej Brytanii może uznać, że oznacza to 1 lipca.

W wielu przypadkach możesz nawet nie wiedzieć, jaki format daty jest używany dla konkretnego języka/kultury. Na szczęście SQL Server przechowuje te informacje w swojej bazie danych zasobów i można je pobrać za pomocą jednej z dwóch poniższych metod.

Metoda 1:Procedura przechowywana sp_helplanguage

sp_helplanguage procedura składowana zwraca informacje o określonym języku alternatywnym lub o wszystkich językach w programie SQL Server. Obejmuje to nazwę języka, jego alias i format daty oraz nazwy miesięcy powiązane z odpowiednim językiem.

Aby zwrócić informacje dla wszystkich języków w SQL Server, uruchom następujące polecenie:

EXEC sp_helplanguage;

Zwraca to dość duży zestaw wyników. Oto pełna lista języków, które otrzymuję, gdy uruchamiam je na mojej instancji SQL Server 2017.

Jeśli nie chcesz, aby zwracane były wszystkie języki, możesz zawęzić je do określonego języka.

Oto przykład:

EXEC sp_helplanguage Spanish;

Oto wynik po uruchomieniu go w 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

Możesz też użyć @@LANGUAGE aby zawęzić go do tego, jaki jest twój obecny język. Przykład:

EXEC sp_helplanguage @@LANGUAGE;

Wynik:

-[ 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

Metoda 2:Widok sys.syslanguages

Drugim sposobem na zwrócenie informacji o języku jest przejście bezpośrednio do sys.syslanguages widok zgodności systemu. To jest widok, z którego powyższa procedura składowana pobiera informacje.

Oto jak wysłać zapytanie do tego widoku:

SELECT * FROM sys.syslanguages;

Możesz również zawęzić go do języka, dodając WHERE klauzula:

SELECT * FROM sys.syslanguages
WHERE name = 'Español';

Pamiętaj, że każdy wpis języka ma nazwę i alias. Powyższe zapytanie można przepisać tak, aby używało aliasu:

SELECT * FROM sys.syslanguages
WHERE alias = 'Spanish';

Jak zapewne wiesz, znacznie łatwiej jest użyć procedury składowanej (pierwsza opcja), ale ten widok może być przydatny, jeśli chcesz zwrócić tylko podzbiór kolumn.

Na przykład:

SELECT 
    name,
    alias,
    dateformat 
FROM sys.syslanguages
WHERE alias = 'Spanish';

Wynik:

+---------+---------+--------------+
| name    | alias   | dateformat   |
|---------+---------+--------------|
| Español | Spanish | 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. Wstaw znaki w środku ciągu w SQL Server (T-SQL)

  2. Jak wykonać IF...THEN w SQL SELECT?

  3. Wstawianie wierszy do tabeli z tylko jedną kolumną IDENTITY

  4. Jak zainstalować SQL Server w SUSE 12?

  5. Zwróć listę wiadomości e-mail wysłanych z poczty bazy danych SQL Server (T-SQL)