Вы должны привести @FromDate в varchar, так как вы выполняете конкатат строки.
CREATE PROCEDURE [dbo].[sp_GetPublishedDocs2]
(
@FromDate as Datetime
)
AS
BEGIN
DECLARE @strSQL VARCHAR(5000)
SET @strSQL = 'SELECT * From Task WHERE 1=1 '
IF @FromDate <>'1/1/1900'
BEGIN
SET @strSQL = @strSQL + ' AND Task.CreatedDate >= ''' + Cast(@FromDate as varchar) + ''''
END
EXEC(@strSQL)
END
Старайтесь избегать SELECT * FROM
. Быстрее определить все столбцы явно.
СОВЕТ: для тестирования вы можете использовать PRINT
пользу EXEC
, чтобы посмотреть, какой sql был произведен.
РЕДАКТИРОВАТЬ: Вы можете использовать VARCHAR(MAX)
здесь ...