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;