Cuando se trabaja con fechas en SQL Server, es fácil confundirse con diferentes formatos de fecha. Por ejemplo, alguien de los EE. UU. podría considerar 01/07/2018 significa el 7 de enero, pero alguien del Reino Unido podría considerar que significa el 1 de julio.
En muchos casos, es posible que ni siquiera sepa qué formato de fecha se usa para un idioma/cultura en particular. Afortunadamente, SQL Server almacena esta información en su base de datos de recursos y puede recuperarla utilizando cualquiera de los dos métodos siguientes.
Método 1:el procedimiento almacenado de sp_helplanguage
El sp_helplanguage
El procedimiento almacenado devuelve información sobre un idioma alternativo en particular o sobre todos los idiomas en SQL Server. Esto incluye el nombre del idioma, su alias, el formato de la fecha y los nombres de los meses asociados con el idioma respectivo.
Para devolver información para todos los idiomas en SQL Server, ejecute lo siguiente:
EXEC sp_helplanguage;
Esto devuelve un conjunto de resultados bastante grande. Aquí está la lista completa de idiomas que obtengo cuando ejecuto eso en mi instancia de SQL Server 2017.
Si no desea que se devuelvan todos los idiomas, puede restringirlo a un idioma específico.
He aquí un ejemplo:
EXEC sp_helplanguage Spanish;
Aquí está el resultado cuando lo ejecuto en 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
También puede usar @@LANGUAGE
para reducirlo a cualquiera que sea su idioma actual. Ejemplo:
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:la vista sys.syslanguages
La segunda forma de devolver la información del idioma es yendo directamente a sys.syslanguages
. vista de compatibilidad del sistema. Esta es la vista de la que el procedimiento almacenado anterior obtiene su información.
Así es como consultar esta vista:
SELECT * FROM sys.syslanguages;
También puede limitarlo a un idioma agregando un WHERE
cláusula:
SELECT * FROM sys.syslanguages WHERE name = 'Español';
Tenga en cuenta que cada entrada de idioma tiene un nombre y un alias. La consulta anterior podría reescribirse para usar el alias:
SELECT * FROM sys.syslanguages WHERE alias = 'Spanish';
Como probablemente se dará cuenta, es mucho más fácil usar el procedimiento almacenado (primera opción), pero esta vista podría ser útil si solo desea que se devuelva un subconjunto de columnas.
Por ejemplo:
SELECT name, alias, dateformat FROM sys.syslanguages WHERE alias = 'Spanish';
Resultado:
+---------+---------+--------------+ | name | alias | dateformat | |---------+---------+--------------| | Español | Spanish | dmy | +---------+---------+--------------+