SQL Server me daba un error «The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.»


Esto es porque SQL-SERVER esperaba, en mi caso, una fecha con formato MM/DD/YYYY

DECLARE @dt VARCHAR(10)
SET @dt = '20/01/2011'
SELECT CAST(@dt AS DATETIME)

Es posible indicar a SQL-SERVER como debe interpretar la fecha, mediante un SET DATEFORMAT para solucionar el problema.

SET DATEFORMAT DMY
DECLARE @dt VARCHAR(10)
SET @dt = '20/01/2011'
SELECT CAST(@dt AS DATETIME)

Otra manera es cambiando el lenguaje por defecto. Para averiguar el lenguaje por defecto:

SELECT @@LANGUAGE, @@LANGID

Si tenemos el administrador corporativo en la pantalla propiedades:

Si tenemos permisos de administrador, podemos cambiar el lenguaje por defecto:

EXEC sp_configure 'default language', 5
RECONFIGURE