Usuário com melhor resposta
select com data errado

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
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
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.
-
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.
-
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
- Editado Diego de Almeida Barreto (Lewis) terça-feira, 11 de junho de 2013 18:44
- 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
-
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
-
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
-
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
- 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
-
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