none
Erro ao converter data RRS feed

  • Pergunta

  • Bom dia,

    Galera!

    Estou com um problema ao gerar um relatório e gostaria de uma ajuda, o problema é o seguinte, tenho a Query abaixo que quando rodo ela é apresentado o erro:

    Detalhe, o erro só acontece quando eu executo na ferramenta de relatório  a condição do case

    Código Estr. Produto, quando eu deixo em branco executa normalmente 

     

    The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.

    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,
    	CONVERT(datetime,CL.CtrlLoteDataValid,103) As DataValidade
    
    	FROM 
    	CTRL_LOTE CL WITH(NOLOCK),
    		Produto P  WITH(NOLOCK)
    
      WHere 
    		
    		 	
            CL.CtrlLoteDataValid >= CAST(GETDATE() AS DATE)
        And CL.CtrlLoteDataValid <= DATEADD(MONTH, 6, GETDATE())
        AND CL.CtrlLoteQtdSaldo>0
        And (P.ProdCodEstr >= @ProdCodIni or @ProdCodIni = '')
        And	(P.ProdCodEstr <= @ProdCodFim or @ProdCodFim = '')    
        And CL.EmpCod = @pEmpCod
        And  P.ProdCodEstr = CL.ProdCodEstr	
    
    
    ORDER BY CASE WHEN @Opcao = 'Código Estr. Produto' THEN P.ProdCodEstr ELSE CONVERT(datetime,CL.CtrlLoteDataValid,103) END
    

    quarta-feira, 27 de julho de 2016 14:37

Respostas

  • Bom dia,

    Experimente dessa forma:

    ORDER BY 
        CASE WHEN @Opcao = 'Código Estr. Produto' 
            THEN P.ProdCodEstr 
            ELSE convert(char(23), CONVERT(datetime, CL.CtrlLoteDataValid, 103), 121)
        END

    obs: o tipo de dados retornado por todas as opções do Case deve ser igual

    Espero que ajude


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


    quarta-feira, 27 de julho de 2016 15:01

Todas as Respostas