Jump to content


Photo

[resolvido] Between


  • Faça o login para participar
8 replies to this topic

#1 mofo

mofo

    12 Horas

  • Usuários
  • 169 posts
  • Sexo:Não informado

Posted 24/04/2009, 14:19

SELECT CH.codigo_chamado, CH.status, CH.agendar_visita, CH.data_encerramento, CH.data_abertura, CH.hora_abertura
, CH.observacao, FU.nome_funcionario, CL.fantasia_nome, CL.codigo_cliente FROM Funcionario FU INNER JOIN
 Chamado CH on CH.codigo_funcionario = FU.codigo_funcionario INNER JOIN Cliente CL on CH.codigo_cliente
 = CL.codigo_cliente 
		where '2009-04-24' BETWEEN CL.data_pagamento and CL.vencimento_contrato

Eu tenho 1 registro onde :
data_pagamento = 1999-12-25
vencimento_contrato = 2009-12-25

O que está de errado no meu select ?
Sem a clausula where seleciona tudo certinho !

Edição feita por: mofo, 25/04/2009, 01:31.


#2 Renan L. Queiroz

Renan L. Queiroz

    Mestre

  • Usuários
  • 690 posts
  • Sexo:Masculino
  • Localidade:Brasilia - DF

Posted 24/04/2009, 14:24

Dé uma olhada neste link: DATE_FORMAT
Veja se isso lhe ajuda!

Especialidade: Desenvolvimento e Banco de Dados.


Este post lhe ajudou? Agradeça: Posted Image


#3 mofo

mofo

    12 Horas

  • Usuários
  • 169 posts
  • Sexo:Não informado

Posted 24/04/2009, 14:26

poderia me dar um exemplo ?

Edição feita por: mofo, 24/04/2009, 14:30.


#4 Renan L. Queiroz

Renan L. Queiroz

    Mestre

  • Usuários
  • 690 posts
  • Sexo:Masculino
  • Localidade:Brasilia - DF

Posted 24/04/2009, 16:07

Como é o retorno quando vc colocar a data desta forma?
'2009-24-04'
Faça esses selects:
SELECT DATE('2009-24-04')
SELECT DATE('2009-04-24')
O retorno é igual?

Obs: to sem o MySQL não da para testar! rs.

Edição feita por: Renan L. Queiroz, 24/04/2009, 16:19.

Especialidade: Desenvolvimento e Banco de Dados.


Este post lhe ajudou? Agradeça: Posted Image


#5 mofo

mofo

    12 Horas

  • Usuários
  • 169 posts
  • Sexo:Não informado

Posted 24/04/2009, 17:11

o formato estava errado !

tenho uma duvida, a minha query está retornando todos os registros, mas deveria apenas moastrar todos os registros do codigo_cliente = 5 mas ele mostra todos.
SELECT CH.codigo_chamado, CH.status, CH.agendar_visita, CH.data_encerramento, CH.data_abertura, CH.hora_abertura, CH.observacao, FU.nome_funcionario, CL.fantasia_nome, CL.codigo_cliente FROM Funcionario FU INNER JOIN Chamado CH on CH.codigo_funcionario = FU.codigo_funcionario INNER JOIN Cliente CL on CH.codigo_cliente = CL.codigo_cliente 
		and '$hoje' BETWEEN CL.data_pagamento and CL.vencimento_contrato

Edição feita por: mofo, 24/04/2009, 17:17.


#6 Renan L. Queiroz

Renan L. Queiroz

    Mestre

  • Usuários
  • 690 posts
  • Sexo:Masculino
  • Localidade:Brasilia - DF

Posted 24/04/2009, 17:33

Em seu código não constei verificação para o cliente, não seria só incluir uma verificação para o mesmo?
select

ch.codigo_chamado, ch.status, ch.agendar_visita, ch.data_encerramento,

ch.data_abertura, ch.hora_abertura, ch.observacao, fu.nome_funcionario,

cl.fantasia_nome, cl.codigo_cliente



from funcionario fu

inner join chamado ch on ch.codigo_funcionario = fu.codigo_funcionario

inner join cliente cl on ch.codigo_cliente = cl.codigo_cliente 



where '$hoje' between cl.data_pagamento and cl.vencimento_contrato and cl.codigo_cliente = '$cliente'
Ou o registro que se encontra entre as datas só quem possui é o cliente 5?

Especialidade: Desenvolvimento e Banco de Dados.


Este post lhe ajudou? Agradeça: Posted Image


#7 mofo

mofo

    12 Horas

  • Usuários
  • 169 posts
  • Sexo:Não informado

Posted 24/04/2009, 17:42

só quem possui é o cliente 5 !

Mas no select que vc fez não dará certo, pq o
and cl.codigo_cliente = '$cliente'
$cliente nunca vai existir pq eu vou verificar todos os clientes que estao com o vencimento do contrato entre(BETWEEN) a data_pagamento e vencimento_contrato.

#8 Renan L. Queiroz

Renan L. Queiroz

    Mestre

  • Usuários
  • 690 posts
  • Sexo:Masculino
  • Localidade:Brasilia - DF

Posted 24/04/2009, 18:01

Tenta assim:
where str_to_date('$hoje', '%Y/%m/%d') between cl.data_pagamento and cl.vencimento_contrato

Edição feita por: Renan L. Queiroz, 24/04/2009, 18:01.

Especialidade: Desenvolvimento e Banco de Dados.


Este post lhe ajudou? Agradeça: Posted Image


#9 mofo

mofo

    12 Horas

  • Usuários
  • 169 posts
  • Sexo:Não informado

Posted 24/04/2009, 22:11

Peço desculpas, pois a query
SELECT CH.codigo_chamado, CH.status, CH.agendar_visita, CH.data_encerramento, CH.data_abertura, CH.hora_abertura, CH.observacao, FU.nome_funcionario, CL.fantasia_nome, CL.codigo_cliente FROM Funcionario FU INNER JOIN Chamado CH on CH.codigo_funcionario = FU.codigo_funcionario INNER JOIN Cliente CL on CH.codigo_cliente = CL.codigo_cliente
		and '2009-04-24' BETWEEN CL.data_pagamento and CL.vencimento_contrato
funciona, só que alguem na empresa alterou o banco de dados sem avisar e ai os outros programadores tambem passaram por esses problemas na hora de testar.

Grato pela atenção

Edição feita por: mofo, 25/04/2009, 01:30.





1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq