sql >> Base de Datos >  >> RDS >> Sqlserver

Error de desbordamiento aritmético al convertir expresión a tipo de datos fecha y hora

El 31 de septiembre no es una fecha, por lo que SQL no puede convertirla en una.

Aparte, debe codificar las fechas en un formato específico de la cultura (yyyyMMdd). 01/08/2012 puede convertirse al 1 de agosto en su servidor, pero ejecutarse en otro y podría ser el 8 de enero. 20120801 se convertirá al 1 de agosto en todos máquinas.

Además, ¿por qué estás convirtiendo fechas a NVARCHAR? ? Está eliminando cualquier beneficio de los índices que tiene y también está realizando conversiones implícitas y explícitas innecesarias. Asumiendo MESSAGEINSERTDATE es una columna DATETIME que podría usar

WHERE MESSAGEINSERTDATE BETWEEN '20120801' AND '20120930'

Si necesita eliminar la hora de MESSAGEINSERTDATE usar

CAST(MESSAGEINSERTDATE AS DATE)