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