Proposed Answer Query Dinamica com Intervalo de Datas

  • segunda-feira, 18 de junho de 2012 18:51
     
      Contém Código

    Tenho um campo na tabela smalldatetime, na aplicação ela passa para Stored como smalldatetime, tudo funciona quando a consulta é normal SELECT XXXX....

    Mas quando preciso fazer ela dinâmica, dá erro na conversão da data, estou fazendo assim:

    if isdate(@CR_DTEMISSAO)=1
    	    set @cmdSQL = @cmdSQL + ' AND [CR_DTEMISSAO] BETWEEN ''' + @CR_DTEMISSAO + ''' AND ''' + @CR_DTFILTRO + ''' '

Todas as Respostas

  • segunda-feira, 18 de junho de 2012 21:27
     
     

    Boa Noite!

    Coloque a declaração das suas variáveis para entender melhor o tipo de cada uma delas.

    Obrigado

  • terça-feira, 19 de junho de 2012 17:17
     
     

    Carlos,

    Qual é a mensagem de erro?


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

  • quarta-feira, 20 de junho de 2012 00:52
     
     Resposta Proposta Contém Código

    Carlos,

    Você pode tentar resolver o problema de conversão dos seguintes modos:

    Considerando os minutos e segundos:

    IF ISDATE(@CR_DTEMISSAO)= 1
    	BEGIN
    	    SET @cmdSQL = @cmdSQL + ' AND [CR_DTEMISSAO] BETWEEN ''' + CONVERT(VARCHAR, @CR_DTEMISSAO, 121) + 
    								''' AND ''' + CONVERT(VARCHAR, @CR_DTFILTRO, 121) + ''' '
    	END
    

    Considerando somente a data:

    IF ISDATE(@CR_DTEMISSAO)= 1
    	BEGIN
    	    SET @cmdSQL = @cmdSQL + ' AND [CR_DTEMISSAO] BETWEEN ''' + CONVERT(VARCHAR(10), @CR_DTEMISSAO, 121) + 
    								''' AND ''' + CONVERT(VARCHAR(10), @CR_DTFILTRO, 121) + ''' '
    	END
    

    Acredito que isso resolva, mas o ideal é você postar a declaração das suas variáveis, como os colegas disseram.


    []'s
    Philipe Souza
    E-mail: Philipe.s.souza@hotmail.com