Hola,
estaba haciendo un procedimiento almacenado que borrase datos de varias tablas a partir de una fecha, por ejemplo: borrar de la tabla TABLA1 aquellos datos que tengan una fecha, en la columna NOMBRE_FECHA superior a 6 meses.
Si cojo la sentencia y la pego directamente en el editor de consultas se ejecuta perfectamente, por ejemplo DELETE FROM TABLA1 WHERE FECHA1<getdate(), pero en el procedimiento almacenado me da error. Los datos que contiene @NOMBRE_TABLA y @NOMBRE_FECHA los obtengo con un cursor. Os adjunto un trozo del procedimiento a ver si me podéis echar una mano.
Gracias.
DECLARE @SQL AS VARCHAR(500)
DECLARE @NOMBRE_TABLA AS VARCHAR(50)
DECLARE @NOMBRE_FECHA AS VARCHAR(50)
DECLARE @FEC_AUX AS DATETIME
SET @FEC_AUX=dateadd(month,-10,getdate())
SET @SQL='DELETE FROM '+@NOMBRE_TABLA + ' WHERE '+@NOMBRE_FECHA+'<' + @FEC_AUX
EXEC @SQL
Msg 241, Level 16, State 1, Procedure MantenmientoTablasHistoricas, Line 43
Conversion failed when converting datetime from character string.
Por el error creo que es porque al hacer la comparación @NOMBRE_FECHA es VARCHAR(50) y @FEC_AUX es DATETIME, pero es que tiene que ser así.