He creado un procedimiento con esta estructura, pero no funciona para el parámetro de entrada datetime
Tipo de fecha y hora para el parámetro de entrada en el procedimiento
que ejecuta esta consulta, pero
declare @a datetime
declare @b datetime
set @a='2012/04/06 12:23:45'
set @b='2012/08/06 21:10:12'
exec LogProcedure 'AccountLog', N'test', @a, @b
pero SQL Server me tiene esta error
La conversión falló al convertir la fecha y/o hora de la cadena de caracteres.
pero cuando pruebo con esta consulta funciona
exec LogProcedure 'AccountLog',N'test'
código de procedimiento almacenado:
alter PROCEDURE LogProcedure
@TableName VARCHAR(60),
@SearchString NVARCHAR(50),
@DateFirst DateTime = '',
@DateLast DateTime = ''
AS
BEGIN
SET NOCOUNT ON
DECLARE @FinalSQL NVARCHAR(MAX)
SET @FINALSQL = 'SELECT * FROM [' + @TableName + '] where 1=2 '
IF @DateFirst <> '' and @DateLast <> ''
set @FinalSQL = @FinalSQL + ' or convert (Date,DateLog) >= '''[email protected] + ' and convert (Date,DateLog) <='''[email protected]
SELECT
@FinalSQL = @FinalSQL + ' or [' + SYSCOLUMNS.NAME + '] LIKE N''%' + @SearchString + '%'' '
FROM SYSCOLUMNS
WHERE OBJECT_NAME(id) = @TableName
AND TYPE_NAME(SYSCOLUMNS.XTYPE) IN ('VARCHAR','NVARCHAR','CHAR','NCHAR','INT','DECIMAL')
ORDER BY COLID
EXEC(@FinalSQL)
END
Esta consulta es verdad también
SELECT *
FROM AccountLog
where 1=2 or convert (Date, DateLog) >= '2012/04/06'
and convert (Date, DateLog) <='2012/08/06'
No entiendo Stackoverflow más, ¿por qué esta pregunta fue downvoted? es un problema bastante general con una explicación de lo que ha intentado. –