Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Modificare la lingua per la sessione corrente in SQL Server

Potresti sapere che quando ti connetti a SQL Server, la lingua per quella sessione è in genere determinata dal tuo login. Quando viene creato un login, gli viene assegnata una lingua predefinita.

La lingua della sessione determina la data e ora formati e messaggi di sistema.

Sebbene tu possa certamente cambiare la lingua predefinita per un accesso, puoi anche sovrascrivere la lingua predefinita all'interno di una sessione, se necessario. Se necessario, puoi passare avanti e indietro tra le lingue. Oppure potresti anche aprire due connessioni separate e applicare una lingua diversa a ciascuna di esse.

Questo articolo spiega come cambiare la lingua all'interno di una sessione.

IMPOSTA LINGUA

Il SET LANGUAGE consente di impostare l'ambiente linguistico per la sessione corrente.

Ecco un esempio.

SET LANGUAGE British;

Ciò imposta la lingua corrente sul britannico.

Posso verificarlo con la seguente query.

SELECT @@LANGUAGE;

Risultato:

British

Formati data

Dovresti sapere che cambiare la lingua all'interno di una sessione cambia anche il formato della data.

Ecco un'altra query per illustrare questo.

DBCC USEROPTIONS;

Risultato:

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

Nota che dateformat è dmy e datefirst è 1 . Questo è in linea con il formato della data britannico.

Ecco cosa succede se cambio la lingua in 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 |
 +-------------------------+----------------+  

Si noti che il formato della data viene modificato implicitamente per aderire alla formattazione della data statunitense.

Se trovi questo problema, puoi sempre cambiare il formato della data senza cambiare la lingua.

Imposta la lingua a livello di query

Alcune funzioni accettano un argomento "cultura" che consente di specificare una lingua da utilizzare solo per quella query. In altre parole, puoi cambiare la lingua ad hoc all'interno di una query, senza dover cambiare la lingua della tua sessione corrente.

Ecco un esempio.

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];

Risultato:

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

Ottieni un elenco di lingue

È possibile eseguire la query seguente per ottenere un elenco delle lingue disponibili in SQL Server.

EXEC sp_helplanguage;

Puoi anche restringere il campo a una lingua specifica aggiungendo il nome o l'alias della lingua.

EXEC sp_helplanguage Italian;