none
select com data errado RRS feed

  • Pergunta

  • Ola pessoal,

    Estou tentando fazer um select onde na tabela de origem o campo data esta desta forma:

    2011-05-18 00:00:00

    O comando abaixo é o seguinte:

    set dateformat dmy

    SELECT DISTINCT

     dbo.tblWRIRecepcao.PK_Recepcao AS Protocolo,

     MAX(dbo.tblWRIRecepcao.DtRecep) AS Data_Recepcao,

     MAX(dbo.tblWRIRecepcao.DtCancelamento) AS Data_Cancelamento,

     MAX(dbo.tblWRIAndamentos.Observacao) AS Data_Andamento,

     MAX(dbo.tblWRIReal.PK_Num_Livro) AS Numero_Matricula

    FROM         dbo.tblWRIRecepcao

    INNER JOIN tblWRITitulos ON dbo.tblWRITitulos.FK_tblWRIRecepcaoRecepcao = dbo.tblWRIRecepcao.PK_Recepcao

    INNER JOIN tblWRIAndamentos ON dbo.tblWRIAndamentos.FK_tblWRIRecepcaoRecepcao = dbo.tblWRIRecepcao.PK_Recepcao

    INNER JOIN tblWRITitulosReal ON dbo.tblWRITitulosReal.FK_tblWRIRecepcaoRecepcao = dbo.tblWRIRecepcao.PK_Recepcao

    INNER JOIN tblWRIReal ON dbo.tblWRIReal.PK_Id = dbo.tblWRITitulosReal.FK_tblWRIReal_Id

    WHERE     (dbo.tblWRIAndamentos.FK_tblWRITpAndamento_Id = 46)

    AND (dbo.tblWRITitulos.DtDevolucao IS NULL)

    AND (dbo.tblWRITitulos.DataUltimoRegistro IS NULL)

    AND (dbo.tblWRITitulos.DtRetirada IS NULL)

    AND (dbo.tblWRIRecepcao.DtCancelamento = dbo.tblWRIRecepcao.DtExpiraPrn)

    AND (dbo.tblWRIAndamentos.Observacao LIKE '%Cancelamento realizado por decurso de prazo em%' + CONVERT(varchar(10), GETDATE(), 112))

    GROUP BY dbo.tblWRIRecepcao.PK_Recepcao

    ORDER BY Protocolo DESC

    Porem ao rodar desta forma nao traz nenhum resultado, se eu tirar o convert ai tras corretamente



    • Editado Felipe_Senna1 terça-feira, 11 de junho de 2013 18:28 acres
    terça-feira, 11 de junho de 2013 18:26

Respostas

  • Entendi, tente trocar o seu convert para a maneira abaixo;

    cast(GETDATE() as smalldatetime)


    Alexandre Matayosi Conde Mauricio.

    • Marcado como Resposta Felipe_Senna1 terça-feira, 11 de junho de 2013 19:57
    terça-feira, 11 de junho de 2013 18:44

Todas as Respostas

  • Felipe, partindo do principio que voce diz que sem o convert retorna registros e com ele não e o seu convert esta nunca condição, por que voce tem que utilizar o convert se sem esta funcionando ?

    Na condição voce faz um like procurando por uma string + a data, neste campo como esta o formato da data ? muito provavelmente esta no formato normal sem o convert por isto retorna dados sem o convert...


    Alexandre Matayosi Conde Mauricio.

    terça-feira, 11 de junho de 2013 18:38
  • Desculpe,

    Eu coloco o convert porque a data na aplicação esta no formato 11/06/2013 e no banco grava desta forma 2011-06-11 00:00:00

    Por isso eu coloco o convert.

    Quando eu disse que sem esta funcionando, tambem me expressei errado, é que sem o convert nao da erro nenhum.

    terça-feira, 11 de junho de 2013 18:40
  • Felipe Blzz Cara.

    percebi que você esta concatenando  o parâmetro do like + a sua data é isso mesmo que vc quer ????

     

    a questão do formato da data você pode tentar assim :

    WHERE     (dbo.tblWRIAndamentos.FK_tblWRITpAndamento_Id = 46) 
    
    AND (dbo.tblWRITitulos.DtDevolucao IS NULL) 
    
    AND (dbo.tblWRITitulos.DataUltimoRegistro IS NULL) 
    
    AND (dbo.tblWRITitulos.DtRetirada IS NULL) 
    
    AND (dbo.tblWRIRecepcao.DtCancelamento = dbo.tblWRIRecepcao.DtExpiraPrn) 
    
    AND (dbo.tblWRIAndamentos.Observacao LIKE '%Cancelamento realizado por decurso de prazo em%' )
    
    AND  ( CONVERT(varchar(10),SeuCampoData,23) = CONVERT(varchar(10), GETDATE(), 23))

    Se ajudou marque como útil blzz


    Diego Almeida Barreto System Analyst / Software Developer


    terça-feira, 11 de junho de 2013 18:41
  • Entendi, tente trocar o seu convert para a maneira abaixo;

    cast(GETDATE() as smalldatetime)


    Alexandre Matayosi Conde Mauricio.

    • Marcado como Resposta Felipe_Senna1 terça-feira, 11 de junho de 2013 19:57
    terça-feira, 11 de junho de 2013 18:44
  • No campo observação dentro da aplicação é gravado esta forma:

    " Cancelamento realizado por decurso de prazo em 10-06-2013 01:00:08"

    Por isso faço o and desse jeito:

    AND(dbo.tblWRIAndamentos.ObservacaoLIKE '%Cancelamento realizado por decurso de prazo em%'+ CONVERT(varchar(10),GETDATE(), 112))

    Porem acredito que o meu convert esta incorreto

    terça-feira, 11 de junho de 2013 19:06
  • AND(dbo.tblWRIAndamentos.ObservacaoLIKE '%Cancelamento realizado por decurso de prazo em%'+ convert(varchar(30), getdate(), 105) + ' ' + convert(varchar(30), getdate(), 108))

    ou se for sql server 2012.... http://msdn.microsoft.com/en-us/library/hh213505.aspx

    Abs.

    • Marcado como Resposta Felipe_Senna1 terça-feira, 11 de junho de 2013 19:57
    • Não Marcado como Resposta Felipe_Senna1 sexta-feira, 14 de junho de 2013 11:58
    terça-feira, 11 de junho de 2013 19:41
  • Exato, seu convert não esta convertendo para o formato em que esta gravada a string, veja a diferença abaixo, tente igual ao ultimo:

    select CONVERT(varchar(10),GETDATE(), 112)
    --20130611
    select cast(GETDATE() as datetime)
    --2013-06-11 16:40:31.050
    


    Alexandre Matayosi Conde Mauricio.

    • Marcado como Resposta Felipe_Senna1 terça-feira, 11 de junho de 2013 19:56
    • Não Marcado como Resposta Felipe_Senna1 sexta-feira, 14 de junho de 2013 11:57
    terça-feira, 11 de junho de 2013 19:41