Ao trabalhar com datas no SQL Server, é fácil se enganar com diferentes formatos de data. Por exemplo, alguém dos EUA pode considerar 01/07/2018 para significar o dia 7 de janeiro, mas alguém do Reino Unido pode considerar que significa o dia 1º de julho.
Em muitos casos, você pode nem saber qual formato de data é usado para qualquer idioma/cultura em particular. Felizmente, o SQL Server armazena essas informações em seu banco de dados de recursos e você pode recuperá-las usando um dos dois métodos abaixo.
Método 1:o procedimento armazenado sp_helplanguage
A
sp_helplanguage
O procedimento armazenado retorna informações sobre um idioma alternativo específico ou sobre todos os idiomas no SQL Server. Isso inclui o nome do idioma, seu alias, formato de data e nomes de mês, associados ao respectivo idioma. Para retornar informações para todos os idiomas no SQL Server, execute o seguinte:
EXEC sp_helplanguage;
Isso retorna um conjunto de resultados bastante grande. Aqui está a lista completa de idiomas que recebo quando executo isso na minha instância do SQL Server 2017.
Se você não quiser que todos os idiomas sejam retornados, poderá reduzi-lo a um idioma específico.
Aqui está um exemplo:
EXEC sp_helplanguage Spanish;
Aqui está o resultado quando eu executo no 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
Você também pode usar
@@LANGUAGE
para reduzi-lo ao seu idioma atual. Exemplo:EXEC sp_helplanguage @@LANGUAGE;
Resultado:
-[ 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
Método 2:a visualização sys.syslanguages
A segunda maneira de retornar as informações de idioma é indo direto para o arquivo
sys.syslanguages
visão de compatibilidade do sistema. Essa é a visão da qual o procedimento armazenado acima obtém suas informações. Veja como consultar essa visualização:
SELECT * FROM sys.syslanguages;
Você também pode reduzi-lo a um idioma adicionando um
WHERE
cláusula:SELECT * FROM sys.syslanguages WHERE name = 'Español';
Observe que cada entrada de idioma tem um nome e um alias. A consulta acima pode ser reescrita para usar o alias:
SELECT * FROM sys.syslanguages WHERE alias = 'Spanish';
Como você provavelmente pode ver, é muito mais fácil usar o procedimento armazenado (1ª opção), mas essa visualização pode ser útil se você quiser apenas um subconjunto de colunas retornado.
Por exemplo:
SELECT name, alias, dateformat FROM sys.syslanguages WHERE alias = 'Spanish';
Resultado:
+---------+---------+--------------+ | name | alias | dateformat | |---------+---------+--------------| | Español | Spanish | dmy | +---------+---------+--------------+