sql >> Database >  >> RDS >> Sqlserver

De datumnotaties vinden die worden gebruikt voor een specifieke taal in SQL Server (T-SQL)

Wanneer u met datums in SQL Server werkt, kunt u gemakkelijk struikelen over verschillende datumnotaties. Iemand uit de VS kan bijvoorbeeld 07/01/2018 . overwegen om 7 januari te betekenen, maar iemand uit het VK zou het kunnen beschouwen als 1 juli.

In veel gevallen weet u misschien niet eens welk datumformaat wordt gebruikt voor een bepaalde taal/cultuur. Gelukkig slaat SQL Server deze informatie op in zijn bronnendatabase en kunt u deze ophalen met een van de twee onderstaande methoden.

Methode 1:de sp_helplanguage opgeslagen procedure

De sp_helplanguage opgeslagen procedure retourneert informatie over een bepaalde alternatieve taal of over alle talen in SQL Server. Dit omvat de taalnaam, de alias en datumnotatie, en maandnamen die aan de respectieve taal zijn gekoppeld.

Voer het volgende uit om informatie voor alle talen in SQL Server te retourneren:

EXEC sp_helplanguage;

Dit levert een behoorlijk grote resultatenset op. Hier is de volledige lijst met talen die ik krijg als ik die uitvoer op mijn exemplaar van SQL Server 2017.

Als u niet wilt dat alle talen worden geretourneerd, kunt u dit beperken tot een specifieke taal.

Hier is een voorbeeld:

EXEC sp_helplanguage Spanish;

Dit is het resultaat als ik het in mssql-cli uitvoer:

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

Je kunt ook @@LANGUAGE . gebruiken om het te beperken tot wat uw huidige taal ook is. Voorbeeld:

EXEC sp_helplanguage @@LANGUAGE;

Resultaat:

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

Methode 2:De weergave sys.syslanguages

De tweede manier waarop u de taalinformatie kunt retourneren, is door rechtstreeks naar de sys.syslanguages te gaan. systeemcompatibiliteit bekijken. Dit is de mening waar de bovenstaande opgeslagen procedure zijn informatie vandaan haalt.

Ga als volgt te werk om deze weergave op te vragen:

SELECT * FROM sys.syslanguages;

Je kunt het ook verfijnen tot een taal door een WHERE . toe te voegen clausule:

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

Merk op dat elke taalinvoer een naam en een alias heeft. De bovenstaande query kan worden herschreven om de alias te gebruiken:

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

Zoals u waarschijnlijk kunt zien, is het veel gemakkelijker om de opgeslagen procedure te gebruiken (1e optie), maar deze weergave kan handig zijn als u alleen een subset van kolommen wilt retourneren.

Bijvoorbeeld:

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

Resultaat:

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

  1. LOG() Functie in Oracle

  2. Batch meerdere select-instructies bij het aanroepen van Oracle vanuit ADO.NET

  3. De standaard bestandslocatie voor gegevensbestanden en logbestanden in SQL Server vinden

  4. Oracle:Bulk Collect-prestaties