sql >> Databáze >  >> RDS >> Sqlserver

Jak najít formáty data používané pro konkrétní jazyk v SQL Server (T-SQL)

Při práci s daty na serveru SQL Server je snadné zakopnout s různými formáty data. Někdo z USA může například zvážit 01/07/2018 znamená 7. ledna, ale někdo ze Spojeného království by to mohl považovat za 1. července.

V mnoha případech možná ani nevíte, jaký formát data se používá pro konkrétní jazyk/kulturu. Naštěstí SQL Server ukládá tyto informace do své zdrojové databáze a můžete je získat pomocí jedné ze dvou níže uvedených metod.

Metoda 1:Uložená procedura sp_helplanguage

 sp_helplanguage uložená procedura vrací informace o konkrétním alternativním jazyce nebo o všech jazycích na serveru SQL Server. To zahrnuje název jazyka, jeho alias, formát data a názvy měsíců přidružené k příslušnému jazyku.

Chcete-li vrátit informace pro všechny jazyky na serveru SQL Server, spusťte následující:

EXEC sp_helplanguage;

To vrátí poměrně velkou sadu výsledků. Zde je úplný seznam jazyků, které dostanu, když to spustím na své instanci SQL Server 2017.

Pokud nechcete vrátit všechny jazyky, můžete to zúžit na konkrétní jazyk.

Zde je příklad:

EXEC sp_helplanguage Spanish;

Zde je výsledek, když jej spustím v 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

Můžete také použít @@LANGUAGE zúžit jej na jakýkoli váš aktuální jazyk. Příklad:

EXEC sp_helplanguage @@LANGUAGE;

Výsledek:

-[ 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:Zobrazení sys.syslanguages

Druhý způsob, jak vrátit informace o jazyce, je přejít přímo na sys.syslanguages pohled na kompatibilitu systému. Toto je pohled, ze kterého výše uložená procedura získává informace.

Zde je návod, jak dotazovat tento pohled:

SELECT * FROM sys.syslanguages;

Můžete jej také zúžit na jazyk přidáním WHERE klauzule:

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

Všimněte si, že každá položka jazyka má název a alias. Výše uvedený dotaz by mohl být přepsán tak, aby používal alias:

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

Jak pravděpodobně víte, je mnohem jednodušší použít uloženou proceduru (1. možnost), ale toto zobrazení může být užitečné, pokud chcete vrátit pouze podmnožinu sloupců.

Například:

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

Výsledek:

+---------+---------+--------------+
| name    | alias   | dateformat   |
|---------+---------+--------------|
| Español | Spanish | dmy          |
+---------+---------+--------------+

  1. Perfect Storm pro upgrade na moderní verzi SQL Server

  2. Jak můžete reprezentovat dědictví v databázi?

  3. uložit výsledek postgresql do proměnné bash

  4. MySQL - spočítat celkový počet řádků v php