Quando si lavora con le date in SQL Server, è facile inciampare con diversi formati di data. Ad esempio, qualcuno dagli Stati Uniti potrebbe prendere in considerazione 07/01/2018 significare il 7 gennaio, ma qualcuno dal Regno Unito potrebbe ritenere che significhi il 1 luglio.
In molti casi potresti non sapere nemmeno quale formato di data viene utilizzato per una lingua/cultura particolare. Fortunatamente, SQL Server archivia queste informazioni nel database delle risorse e puoi recuperarle utilizzando uno dei due metodi seguenti.
Metodo 1:la procedura memorizzata sp_helplanguage
Il sp_helplanguage
stored procedure restituisce informazioni su una particolare lingua alternativa o su tutte le lingue in SQL Server. Ciò include il nome della lingua, il relativo alias, il formato della data e i nomi dei mesi associati alla rispettiva lingua.
Per restituire informazioni per tutte le lingue in SQL Server, eseguire quanto segue:
EXEC sp_helplanguage;
Ciò restituisce un set di risultati piuttosto ampio. Ecco l'elenco completo delle lingue che ottengo quando lo eseguo sulla mia istanza di SQL Server 2017.
Se non vuoi che vengano restituite tutte le lingue, puoi restringere il campo a una lingua specifica.
Ecco un esempio:
EXEC sp_helplanguage Spanish;
Ecco il risultato quando lo eseguo in 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
Puoi anche utilizzare @@LANGUAGE
per restringere il campo a qualunque sia la tua lingua attuale. Esempio:
EXEC sp_helplanguage @@LANGUAGE;
Risultato:
-[ 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
Metodo 2:la vista sys.syslanguages
Il secondo modo per restituire le informazioni sulla lingua è accedere direttamente a sys.syslanguages
visualizzazione della compatibilità del sistema. Questa è la vista da cui la stored procedure sopra ottiene le sue informazioni.
Ecco come interrogare questa vista:
SELECT * FROM sys.syslanguages;
Puoi anche restringere il campo a una lingua aggiungendo un WHERE
clausola:
SELECT * FROM sys.syslanguages WHERE name = 'Español';
Si noti che ogni voce di lingua ha un nome e un alias. La query precedente potrebbe essere riscritta per utilizzare l'alias:
SELECT * FROM sys.syslanguages WHERE alias = 'Spanish';
Come probabilmente puoi vedere, è molto più semplice utilizzare la stored procedure (1a opzione), ma questa visualizzazione potrebbe essere utile se desideri restituire solo un sottoinsieme di colonne.
Ad esempio:
SELECT name, alias, dateformat FROM sys.syslanguages WHERE alias = 'Spanish';
Risultato:
+---------+---------+--------------+ | name | alias | dateformat | |---------+---------+--------------| | Español | Spanish | dmy | +---------+---------+--------------+