944 063 154 carrito-compra-linube

Cómo cambiar formato de SQL Server (dateformat)

Publicado enSistemas TI

¿Tienes instalado por defecto otro idioma en tu gestor de bases de datos? Aunque no lo parezca este es un problema que puede suceder al migrar una base de datos a otro entorno MSSQL que no comparta el mismo lenguaje de instalación que el que teníamos en un principio. Las ocasiones en las que hace falta cambiar el lenguaje de SQL («date format of sql server» en inglés) son bastante numerosas.

En nuestro caso el cambio se ha producido al restaurar una base de datos que se encontraba en un SQL con lenguaje «español» a otro que habían instalado en «us_english». Con el primero las fechas (campos de tipo datetime) se muestran en formato «dd/mm/yyy«; pero en inglés las fechas tienen el formato «mm/dd/yyyy».

Si mostramos la tabla desde el Microsoft SQLServer Managmentent Studio veremos que las fechas SQL se muestran tal y como hemos importado. Pero el problema viene cuando queremos hacer una consulta. Por ejemplo, desde nuestra web, y SQL Server nos devuelve la fecha. En este momento nos encontraremos con que se produce un error que está relacionado con el formato de la fecha. Por ello, y puestos ya en situación, vamos manos a la obra con el date format SQL Server.

¿Cómo ver el lenguaje SQL?

select @@language

Si MSSQL ha sido instalado en inglés seguramente obtendrás us_english como resultado.

Para ver todos los lenguajes disponibles en SQL y cuáles son sus propiedades podemos hacer lo siguiente:

  sp_helplanguage

¿Cómo establecer Date format SQL Server?

De la siguiente manera podemos establecer el lenguaje español para todas las consultas que lancemos desde la sesión y con el usuario que estemos conectados:

SET LANGUAGE Español

También podemos, por ejemplo en el caso de nuestra web, antes de lanzar una consulta SQL especificar el dateformat deseado en cada caso, indicando: 

set dateformat dmy

¿Cómo establecer el lenguaje predeterminado para todas las bases de datos del servidor?

De esta manera conseguimos que por defecto se devuelvan las fechas en inglés al formato dd/mm/yyyy. Lo que debemos hacer es abrir Microsoft SQL Server Managmentent Studio. Y a continuación ir a las propiedades del servidor SQL; en el apartado avanzado, podremos modificar la opción idioma predeterminado por Español.

Además hay que tener en cuenta el lenguaje por defecto de los Inicios de sesión que existan en el servidor; ya que los que creemos nuevos a partir de ahora lo harán con lenguaje español. Para ello tendremos que hacer lo siguiente:

USE (master) 

GO

AFTER LOGIN (serversqlsergiosainz) WITH DEFAULT_DATABASE=(master) DEFAULT _LANGUAGE= (Spanish)

GO

Recuerda que también es posible modificar el idioma por el deseado desde las propiedades del usuario.

Y hasta aquí el tutorial sobre Date format SQL. En lo que respecta a Transact-SQL, estos son los tipos de datos y funciones de fecha y hora a partir de SQL Server 2012.

Y si quieres saber más, ¡consulta nuestros artículos!