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