Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Naelson

[Resolvido] Select DATE_FORMAT inconsistente

Recommended Posts

Olá a todos, estava com esta dificuldade:

 

Olá a todos,
Estou com dificuldades no MySql, talvez voces possam me ajudar, segue a dúvida:
Tenho esse SELECT, me retorna corretamente os registros com a data informada,

SELECT * , DATE_FORMAT(DataEntrada, "%d-%m-%Y")
  FROM
  guiaitems_r
WHERE
  DATE_FORMAT(DataEntrada, "%d/%m/%Y") = '08/05/2009'
ORDER BY
  DataEntrada

agora se eu colocar > ou <, me retorna registros que não corresponde a pesquisa, tipo dos anos 2007, 2008, etc. em outras palavras
não funciona com o sinal de > ou <, somente com o igual, poderiam me ajudar.


  DATE_FORMAT(DataEntrada, "%d/%m/%Y") [color="#FF0000"]>=[/color] '08/05/2009'

Um abraço a todos

Naelson

ai alterei para:

 

$query_Recordset1 = sprintf( guiaitems_r.Protocolo, guiaitems_r.OrgaoCod, guiaitems_r.OrgaoDescricao, guiaitems_r.AssCod, guiaitems_r.AssDesc, guiaitems_r.MotivoCod, guiaitems_r.MotivoDesc, guiaitems_r.MotivoReal, guiaitems_r.TCSigla, guiaitems_r.TCNum, guiaitems_r.TCAno, guiaitems_r.DataTramite, guiaitems_r.DataEntrada FROM guiaitems_r WHERE guiaitems_r.DataEntrada>= STR_TO_DATE(%s,'%%d/%%m/%%Y') AND guiaitems_r.DataEntrada<=STR_TO_DATE(%s,'%%d/%%m/%%Y') ORDER BY guiaitems_r.DataEntrada", GetSQLValueString($search1_Recordset1, "date"),GetSQLValueString($search2_Recordset1, "date"));

 

e consegui fazer o SELECT funcionar, acontece que agora na geração do relatório aparece a data no padrão '2009/05/16'

segue a linha que mostro o resultado:

 

$pdf->Cell(0,5, "".$row_Recordset1['DataEntrada']."");

preciso que me mostre no padrão BR '16/05/2009'

e agora como proceder, alguém poderia me ajudar.

 

Um abraço a todos

Naelson

Compartilhar este post


Link para o post
Compartilhar em outros sites

eio veio naum sei c no seu caso daria certo mais você pode usar o getdate() - busca data do servidor.

 

select * from tb_alguma_coisa where

data >= getdate()

 

 

esse caso eh quando você naum digita a data,e sim pega do servidor

 

 

qualquer duvida soh postar

Compartilhar este post


Link para o post
Compartilhar em outros sites

DATE_FORMAT(DataEntrada, "%d/%m/%Y") >= '08/05/2009'

 

isso nunca vai funcionar, já que 08/05/2009 nao faz o menor sentido para o MySQL

 

teria q ser

 

DataEntrada > '20090508'

ou

DataEntrada > '2009-05-08'

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá giesta,

 

Primeiro, obrigado pela resposta, voce deve ter se enganado, pois funciona sim, a select retorna todos os registros pesquisados na data

ou seja todos com data = '08/05/2009', acontece que quando eu coloco o sinal de > ou <, a pesquisa

não funciona adequadamente ou seja, me retorna todos os registros que sejam maiores ou menores somente

do dia, não respeitando o mes e o ano.

Estou usando o DATE_FORMAT que faz a conversão para o padrão BR.

um abraço

 

Naelson

 

DATE_FORMAT(DataEntrada, "%d/%m/%Y") >= '08/05/2009'

 

isso nunca vai funcionar, já que 08/05/2009 nao faz o menor sentido para o MySQL

 

teria q ser

 

DataEntrada > '20090508'

ou

DataEntrada > '2009-05-08'

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nao, eu nao me enganei.

 

quando você diz

DATE_FORMAT(DataEntrada, "%d/%m/%Y") >= '08/05/2009'

 

você pergunta ao banco se '08/05/2009' eh igual a '08/05/2009' e realmente eh, embora ele nao faça a menor ideia do que eh '08/05/2009' e por isso que com '='(igual) funciona e com ><(maior e menor nao funciona)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente fazer o seguinte, na estrutura wehere faça a conversão ao passar o parâmetro via aplicação, deixando o tipo do campo como está no banco, isto és, sem formatá-lo.

você só faz a conversão no select para exibir a data para o usuário. Por exemplo:

 

--AQUI SEU SELECT FICA FORMATADO COMO você DESEJAR

SELECT * , DATE_FORMAT(DataEntrada, "%d-%m-%Y") SUA_DATA

FROM guiaitems_r

--AQUI você DEIXA O CAMPO NORMAL COMO ESTÁ NO BANCO

--SEM FORMATAÇÃO, APENAS NA APLICAÇÃO É Q você ALTERA O FORMATO DO PARÂMETRO.

WHERE DataEntrada > FormatDateTime('yyyy/MM/dd', StrToDateTime(TxtDataEntrada.Text))

ORDER BY DataEntrada

Compartilhar este post


Link para o post
Compartilhar em outros sites

pro banco eh a mesma coisa q eu chegar pra você e falar

 

ZS|$12#3H eh igual a ZS|$12#3H ? você vai dizer q sim

 

mas se eu perguntar se ZS|$12#3H eh maior q SS|@44#00 você nao vai saber me dizer pq isso nao faz sentido pra você, como 08/05/09 nao faz sentido pro banco

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiro gostaria de agradecer aos foristas, em especial aos colegas que prontamente, atenderam minha dúvida,

com as dicas de voces deixei meu select assim, e está funcionando muito bem.

Muito obrigado a todos.

 

um abraço

 

naelson

 

SELECT DATE_FORMAT(DataEntrada, '%%d/%%m/%%Y') AS DataEntrada, guiaitems_r.Protocolo, guiaitems_r.OrgaoCod, guiaitems_r.OrgaoDescricao, guiaitems_r.AssCod, guiaitems_r.AssDesc, guiaitems_r.MotivoCod, guiaitems_r.MotivoDesc, guiaitems_r.MotivoReal, guiaitems_r.TCSigla, guiaitems_r.TCNum, guiaitems_r.TCAno  FROM guiaitems_r WHERE guiaitems_r.DataEntrada>= STR_TO_DATE(%s,'%%d/%%m/%%Y') 
AND guiaitems_r.DataEntrada<=STR_TO_DATE(%s,'%%d/%%m/%%Y') ORDER BY guiaitems_r.DataEntrada

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.