none
setar variavel em campo texto RRS feed

  • Pergunta

  • Boa tarde pessoal

    Estamos fazendo a conversão de uma base de dados ( em testes), e na base do sistema antigo colocava-se data em campo texto

    estou com dificuldade para fazer a comparação de uma variavel declarada como data em um campo texto que tem o conteudo de datas

    Se alguem puder me dar uma dica porque nao esta funcionando

    ALTER        Procedure [dbo].[pr_RegistraAtosDia]

    As

    BEGIN

    Declare @DtDia datetime

    Declare @AtoId Int

    set dateformat dmy

    Declare      #SelectAux Cursor   For

           select

                 tblwriatos.PK_Id

           from tblWRIAndamentos

                 inner join tblwriatostitulos

                        on tblwriatostitulos.FK_tblWRIRecepcaoRecepcao = tblwriandamentos.FK_tblWRIRecepcaoRecepcao

                       

                 inner join tblWRIRecepcao on tblwrirecepcao.PK_Recepcao = tblwriandamentos.FK_tblWRIRecepcaoRecepcao

                       

                 left outer join tblWRIAtos

                        on tblwriatos.PK_Id = tblWRIAtosTitulos.FK_tblWRIAtos_Id

           where

            @DtDia = tblwriandamentos.Observacao – Neste campo observação tem datas no formato dd/mm/YYYY

                 and tblwriatos.DataAto is null

                 and tblWRIRecepcao.DtCancelamento is null

                 and tblWRIAndamentos.FK_tblWRITpAndamento_Id = 296

                

           order by

                 tblwriatos.PK_Id asc

          

    Open   #SelectAux

    Fetch  Next   From  

           #SelectAux    Into   @AtoId

    While  @@Fetch_Status = 0

    Begin

    --print @DtDia

          

           Execute pr_RegistrarAto

                 @AtoId,

                 @DtDia,

                 'N',

                 0,

                 0,

                 1,

                 0

           Fetch  Next   From  

                 #SelectAux    Into   @AtoId

    End

    Close  #SelectAux

    Deallocate #SelectAux

    END

    quarta-feira, 22 de maio de 2019 17:18

Todas as Respostas

  • Luis,

    Se eu entendi bem, no campo tblwriandamentos.Observacao existem valores no formato de data, armazenados dentro dele. É isso?

    Existe uma posição específica para este valor esta armazenado, por exemplo no ínicio ou fim?

    Veja se isso te ajuda:

    Declare @MinhaTabela Table (Codigo Int Identity(1,1), Observacao Varchar(100)) Insert Into @MinhaTabela Values ('TESTE DE DATA 28/04/1980') Insert Into @MinhaTabela Values ('TESTE 28/04/1980 DE DATA') Insert Into @MinhaTabela Values ('DIA 28/04/1980 TESTE') Insert Into @MinhaTabela Values ('TESTE DE 28/04/1980 DE DATA') Select SubString(Observacao, CharIndex('28/04/1980',Observacao),10) From @MinhaTabela
    Go


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    quarta-feira, 22 de maio de 2019 17:38
  • Deleted
    quarta-feira, 22 de maio de 2019 17:48
  • Ola Jose

    Dentro do campo texto as datas estao exatamente assim:

    Exemplo:

    23/05/2019

    22/05/2019

    21/05/2019

    nao existe mais nada nesta tabela de campo texto, apenas datas nesse formato


    • Editado Luis Padilha quarta-feira, 22 de maio de 2019 18:14 acress
    quarta-feira, 22 de maio de 2019 18:12
  • Deleted
    quarta-feira, 22 de maio de 2019 18:19
  • Luis,

    Se for somente as Datas, ai fica mais fácil ainda, basta converter:

    Declare @MinhaTabelaDatas Table
    (Codigo Int Identity(1,1),
     Observacao Varchar(100))
    
    Insert Into @MinhaTabelaDatas Values ('23/05/2019')
    Insert Into @MinhaTabelaDatas Values ('22/05/2019')
    Insert Into @MinhaTabelaDatas Values ('21/05/2019')
    
    -- Exemplo 1 --
    Select Convert(Date,Observacao,103) From @MinhaTabelaDatas
    
    -- Exemplo 2 --
    Select * From @MinhaTabelaDatas
    Where Convert(Char(10),Observacao,103) = '22/05/2019'
    
    -- Exemplo 3 --
    Select * From @MinhaTabelaDatas
    Where Convert(Date,Observacao,103) = Convert(Date,GetDate(),103)
    Go


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    quarta-feira, 22 de maio de 2019 18:23
  • Eu preciso arrumar essa linha

     where         @DtDia = tblwriandamentos.Observacao

    no caso do seu exemplo ficaria assim:

    where @DtDia = (convert(date,tblwriandamentos.Observacao,103)   

    é isso??????

    quarta-feira, 22 de maio de 2019 18:43
  • Luis,

    Isso mesmo!!!

    Mas removendo um parenteses, ficando assim:

    where @DtDia = Convert(date,tblwriandamentos.Observacao,103) 


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]



    quarta-feira, 22 de maio de 2019 18:46
  • Jose

    Acredito que sim, a solução do Galvão infelizmente nao deu certo, neste caso eu tenho que converter o @DTDia é isso?

    Nao tem espaços

    Como ficaria?

    quarta-feira, 22 de maio de 2019 19:03
  • Deleted
    quarta-feira, 22 de maio de 2019 19:10
  • Luis,

    Sim, a minha sugestão não leva em consideração a existência de espaço, conforme você vou argumentando eu elaborei sem considerar esta possibilidade, mas não tem problemas, estamos aqui para errar, aprender e transmitir o conhecimento.

    Neste caso, a observação e sugestão do José Diz se aplica, inclusive quando postei a primera resposta e minha sugestão inicial era a apresentada abaixo:

    Declare @MinhaTabela Table
    (Codigo Int Identity(1,1),
     Observacao Varchar(100))
    
    Insert Into @MinhaTabela Values ('TESTE DE DATA 23/04/1980')
    Insert Into @MinhaTabela Values ('TESTE 28/04/1980 DE DATA')
    Insert Into @MinhaTabela Values ('DIA 25/04/1980 TESTE')
    Insert Into @MinhaTabela Values ('TESTE DE 27/04/1980 DE DATA')
    
    -- Select 1 --
    Select * From @MinhaTabela
    Where Observacao Like '%28/04/1980%'
    
    -- Select 2 --
    Select * From @MinhaTabela
    Where SubString(Observacao, CharIndex('28/04/1980',Observacao),10) = '28/04/1980'
    Go

    Claro que estes exemplos podem ser melhorados e aprimorados de acordo com a sua necessidade, mas acredito que deve estar próximo do que você deseja.


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    quarta-feira, 22 de maio de 2019 23:58
  • Deleted
    sábado, 1 de junho de 2019 15:28