sql >> Databasteknik >  >> RDS >> Sqlserver

Ändra språket för den aktuella sessionen i SQL Server

Du kanske vet att när du ansluter till SQL Server bestäms språket för den sessionen vanligtvis av din inloggning. När en inloggning skapas tilldelas den ett standardspråk.

Sessionsspråket bestämmer datumtid format och systemmeddelanden.

Även om du säkert kan ändra standardspråket för en inloggning, kan du även åsidosätta standardspråket inom en session om du behöver. Du kan växla fram och tillbaka mellan språk om det behövs. Eller så kan du till och med öppna två separata anslutningar och använda ett annat språk på var och en av dem.

Den här artikeln förklarar hur du ändrar språk under en session.

STÄLL IN SPRÅK

SET LANGUAGE sats låter dig ställa in språkmiljön för den aktuella sessionen.

Här är ett exempel.

SET LANGUAGE British;

Det gör att det nuvarande språket blir brittiskt.

Jag kan verifiera detta med följande fråga.

SELECT @@LANGUAGE;

Resultat:

British

Datumformat

Du bör veta att om du byter språk inom en session också ändrar datumformatet.

Här är en annan fråga för att illustrera detta.

DBCC USEROPTIONS;

Resultat:

+-------------------------+----------------+
 | Set Option              | Value          |
 |-------------------------+----------------|
 | textsize                | -1             |
 | language                | British        |
 | dateformat              | dmy            |
 | datefirst               | 1              |
 | lock_timeout            | 5000           |
 | quoted_identifier       | SET            |
 | arithabort              | SET            |
 | ansi_null_dflt_on       | SET            |
 | ansi_warnings           | SET            |
 | ansi_padding            | SET            |
 | ansi_nulls              | SET            |
 | concat_null_yields_null | SET            |
 | isolation level         | read committed |
 +-------------------------+----------------+ 

Lägg märke till att dateformat är dmy och datefirst är 1 . Detta är i linje med det brittiska datumformatet.

Det här är vad som händer om jag ändrar språket till us_english .

SET LANGUAGE us_english; 
 ....... DBCC USEROPTIONS;                                                             
 Time: 0.738s
 Changed language setting to us_english.
 +-------------------------+----------------+
 | Set Option              | Value          |
 |-------------------------+----------------|
 | textsize                | -1             |
 | language                | us_english     |
 | dateformat              | mdy            |
 | datefirst               | 7              |
 | lock_timeout            | 5000           |
 | quoted_identifier       | SET            |
 | arithabort              | SET            |
 | ansi_null_dflt_on       | SET            |
 | ansi_warnings           | SET            |
 | ansi_padding            | SET            |
 | ansi_nulls              | SET            |
 | concat_null_yields_null | SET            |
 | isolation level         | read committed |
 +-------------------------+----------------+  

Observera att datumformatet implicit ändras för att följa USA:s datumformatering.

Om du tycker att detta är problematiskt kan du alltid ändra datumformatet utan att ändra språket.

Ange språk på frågenivå

Vissa funktioner accepterar ett "kultur"-argument som låter dig ange ett språk som endast ska användas för den frågan. Med andra ord kan du ändra språket ad-hoc i en fråga, utan att behöva ändra språket för din nuvarande session.

Här är ett exempel.

SET LANGUAGE us_english;
SELECT 
  FORMAT(GETDATE(), 'd') AS [My Default],
  FORMAT(GETDATE(), 'd', 'en-GB') AS [British],
  FORMAT(GETDATE(), 'd', 'de-DE') AS [German];

Resultat:

+--------------+------------+------------+
 | My Default   | British    | German     |
 |--------------+------------+------------|
 | 3/29/2020    | 29/03/2020 | 29.03.2020 |
 +--------------+------------+------------+  

Få en lista över språk

Du kan köra följande fråga för att få en lista över tillgängliga språk i SQL Server.

EXEC sp_helplanguage;

Du kan också begränsa det till ett specifikt språk genom att lägga till det med språknamnet eller aliaset.

EXEC sp_helplanguage Italian;

  1. DATEDIFF-funktion i Oracle

  2. SQLAlchemy PÅ DUBLIKATNYCKELUPPDATERING

  3. viloläge med c3p0:createClob() är ännu inte implementerat

  4. PLSQL JDBC:Hur får man sista rad-ID?