none
Parâmetro com Date RRS feed

  • Pergunta

  • Bom dia,

    A todos!

    Estou precisando de uma ajuda, tenha a seguinte query que traz os produtos com lotes proximos do vencimento, preciso colocar um parâmetro na procedure para que o usuário defina a quantidade de dias que ele deseja verificar se está vencendo, quando coloco como parâmetro recebo o seguinte erro 

    Argument data type varchar is invalid for argument 2 of dateadd function.
    SELECT 
    	P.ProdCodEstr, 
    	P.ProdNome As Descricao,
    	CL.CtrlLoteUnidMedCod As Unidade,
    	CL.CtrlLoteQtdSaldo As Saldo,
    	CL.CtrlLoteNum As Lote,
    	CONVERT(datetime,CL.CtrlLoteDataFab,103) As DataFabricacao,
    	CL.CtrlLoteDataValid As DataValidade
    
    	FROM 
    	CTRL_LOTE CL WITH(NOLOCK),
    		Produto P  WITH(NOLOCK)
    
      WHere 
    		
    		 	
            CL.CtrlLoteDataValid >= CAST(GETDATE() AS DATE)
        And CL.CtrlLoteDataValid <= DATEADD (DAY, @QtdDias, GETDATE ())
        AND CL.CtrlLoteQtdSaldo>0
        And (P.ProdCodEstr >='10.01.0001')
        And	(P.ProdCodEstr <= '10.09.9999')    
        And CL.EmpCod = '1'
        And  P.ProdCodEstr = CL.ProdCodEstr	


    sexta-feira, 19 de maio de 2017 11:43

Respostas

  • Bom dia Leandro,

    O seu parâmetro @QtdDias aparentemente está como varchar, porém a função dateadd precisa que seja informado INT para realizar a conta.

    Converta seu parâmetro ou mude o tipo na declaração do mesmo.

    Abraço!


    "A vida é um paraíso, mas os homens não o sabem e não se preocupam em sabê-lo." Fiodor Dostoievski

    sexta-feira, 19 de maio de 2017 12:05

Todas as Respostas

  • Bom dia Leandro,

    O seu parâmetro @QtdDias aparentemente está como varchar, porém a função dateadd precisa que seja informado INT para realizar a conta.

    Converta seu parâmetro ou mude o tipo na declaração do mesmo.

    Abraço!


    "A vida é um paraíso, mas os homens não o sabem e não se preocupam em sabê-lo." Fiodor Dostoievski

    sexta-feira, 19 de maio de 2017 12:05
  • Bom dia,

    Leandro, pela mensagem de erro acredito que o parâmetro QtdDias foi declarado como varchar e o mesmo deve ser do tipo integer para ser utilizado com a função DateAdd.

    Espero que ajude


    Assinatura: http://www.imoveisemexposicao.com.br

    sexta-feira, 19 de maio de 2017 12:07
  • Obrigado, fiz a alteração para int e consegui executar a procedure.

    abs

    sexta-feira, 19 de maio de 2017 12:34
  • Obrigado, fiz a alteração para int e consegui executar a procedure.

    abs

    sexta-feira, 19 de maio de 2017 12:34
  • Leandro, se a resposta resolveu o seu problema, favor marcá-la como resposta.

    Abraço!


    "A vida é um paraíso, mas os homens não o sabem e não se preocupam em sabê-lo." Fiodor Dostoievski

    sexta-feira, 19 de maio de 2017 14:36