PESQUISAR ENTRE DATAS

FELLIPEASSIS 14/03/2015 17:35:07
#445240
olá pessoal estou com mais um problema, que não consegui achar a solução,
o problema esta na consulta entre datas que não me retorna a nenhum registro.
seguem a procedure.
CREATE PROCEDURE [dbo].[Pr_Sel_Equip]
(

@num_serie1 VARCHAR(20) = NULL,
@num_serie2 VARCHAR(20) = NULL,
@setor VARCHAR(50) = NULL,
@localidade VARCHAR(20) = NULL,
@dat_ini DATETIME = NULL,
@dat_fin DATETIME = NULL
)
AS
BEGIN
SET NOCOUNT ON;
---CIRCUNDADO COM TRY E CATCH RETORNA MENSSAGEM DE ERRO NO CAMPO RETORNO
BEGIN TRY
SELECT
E.codigo,
M.tipo, -- tipo da impressora(M ou C)
M.nome, --modelo da impressora
E.num_serie,
E.num_serie_2,
L.nome, -- localidade (Ex: 1º andar)
E.setor,
E.dat_coleta,
E.centro_custo,
E.cont_ini,
E.cont_final,
E.tot_impresso,
E.situacao,
E.observacao,
E.dat_cad,
E.dat_alt
-- [Ô]E[Ô] APELIDO DA TABELA EQUIPAMENTO
-- [Ô]M[Ô] APELIDO DA TABELA MODELO, [Ô]L[Ô] APELIDO DA TABELA LOCALIDADE
FROM Equipamento AS E WITH(NOLOCK)
INNER JOIN Modelo AS M
ON E.cod_modelo = M.codigo
INNER JOIN Localidade AS L
ON E.cod_localidade = L.codigo
WHERE E.num_serie LIKE ISNULL([ô]%[ô] + @num_serie1 +[ô]%[ô], E.num_serie) AND
E.num_serie_2 LIKE ISNULL([ô]%[ô] + @num_serie2 +[ô]%[ô], E.num_serie_2) AND
E.setor LIKE ISNULL( [ô]%[ô] + @setor +[ô]%[ô], E.setor) AND
L.nome LIKE ISNULL( [ô]%[ô] + @localidade +[ô]%[ô], L.nome) AND
[txt-color=#e80000] E.dat_coleta >= @dat_Ini AND E.dat_coleta <= @dat_Fin [/txt-color]
ORDER BY M.nome
END TRY
BEGIN CATCH
ROLLBACK TRAN
SELECT ERROR_MESSAGE() as RETORNO
END CATCH
END
o problema está justo na linha em vermelho, oque esta de errado, pois não sei trabalhar com datas e usando outros parâmetros.
PEGUDO 16/03/2015 08:02:30
#445260
Tente o BETWEEN, colocando a data final na frente:
[txt-color=#e80000][Ô]AND E.dat_coleta BETWEEN @dat_Fin AND @dat_Ini[Ô][/txt-color]


Ou, se não retornar nada, coloque a data inicial na frente:
[txt-color=#e80000][Ô]AND E.dat_coleta BETWEEN @dat_Ini AND @dat_Fin[Ô][/txt-color]
FELLIPEASSIS 18/03/2015 14:42:15
#445324
já tentei dessa forma e não tive sucesso. A procedure executa, porem na hora de chama-la, não retorna a nenhum registro.
FELLIPEASSIS 18/03/2015 22:28:41
#445334
bom pessoal consegui resolver a situação, bom pra quem tiver a mesma duvida deixo o Código que utilizei baseado nesse site
WHERE (@num_serie1 IS NULL OR E.num_serie LIKE [ô]%[ô] + @num_serie1 +[ô]%[ô]) AND
(@num_serie2 IS NULL OR E.num_serie_2 LIKE [ô]%[ô] + @num_serie2 +[ô]%[ô]) AND
(@setor IS NULL OR E.setor LIKE [ô]%[ô] + @setor +[ô]%[ô]) AND
(@localidade IS NULL OR L.nome LIKE [ô]%[ô] + @localidade +[ô]%[ô]) AND
(E.dat_coleta >= @dat_Ini OR @dat_Ini IS NULL) AND
(E.dat_coleta <= @dat_Fin OR @dat_Fin IS NULL)
ORDER BY M.nome
OPTION (RECOMPILE)
Tópico encerrado , respostas não são mais permitidas