Ir para conteúdo

POWERED BY:

Arquivado

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

Ronaldo Bueno

[Resolvido] Campo Data com Varchar MySQL

Recommended Posts

Pessoal, preciso de uma ajuda dos feras !

 

Tenho um cliente novo que tem um sistema (não fui em quem fiz) e tem uma tabela de consultório que o campo data e hora estão como VARCHAR.

 

Agora que sou eu quem dá suporte nesse sistema (porque o cara que fez sumiu rsrs), pediram para eu criar mais alguns relatórios e estou com o seguinte problema.

 

tenho que fazer uma consulta assim:

 

"SELECT * FROM consultorio WHERE convenios='"&plano&"' and guia='Sim' and dataconsulta BETWEEN '"&datai&"' and '"&dataf&"' ORDER BY dataconsulta,horaconsulta"

 

onde plano, datai e dataf vem de um form.

 

exemplo: plano = Bradesco

datai = 01/03/2011

dataf = 31/03/2011

 

Até ai tudo bem, acontece que ela não filtra direito as consultas, o plano esta certo ele filtra todos, mas aparecem datas que não tem nada haver.

 

1 - 05/04/2011

2 - 10/03/2011

3 - 17/03/2011

4 - 25/03/2011

5 - 25/06/2010

6 - 28/03/2011

 

O que fazer para resolver esse problema ? já que não posso mudar o campo de VARCHAR para DATE (isso iria afetar todo o sistema).

 

e se fosse o caso de alterar o campo, como iria transformar todos os registro que a data é dd/mm/aaaa para aaaa/mm/dd porque já tentei até transformar em uma cópia que fiz, mas dá erro de sintaxe por causa dessa data.

 

Agradeço a ajuda

Compartilhar este post


Link para o post
Compartilhar em outros sites

este é o maior programa de começar errado as coisas

 

queria saber quem foi o genio que disse que era para colocar datas em campo texto

 

se alterar o tipo de dados ele entenderá as os intervalos corretamente coisa que obviamente não faz como texto

 

se não alterar terá que usar gambiarra para fazer isso funcionar e estará criando um monstro para o futuro onde será cada vez mais complexos realizar as demandas que forem solicitadas

Compartilhar este post


Link para o post
Compartilhar em outros sites

Use a função CDate para converter.

Dica: Use a função IsDate para determinar se a data pode ser convertida em uma data ou hora.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Concordo com você. não sei quem disse para ele colocar data em campo texto, mas agora já foi.

 

Tem uma idéia de como faço para converter todas as datas gravadas no formato de texto dd/mm/aaaa para formato data aaaa/mm/dd ?

 

ou seja primeiro preciso fazer isso na tabela para depois mudar o tipo do campo certo ? ou teria uma idéia melhor ?

 

Obrigado por responder

 

xanburzum,

 

legal usei a IsDate para testar e retornou TRUE.

 

Agora ve se estou certo no raciocínio:

 

select dataconsulta from consultorio

 

while not RS.eof

 

dataatual = RS("dataconsulta")

 

dia = Str(dataatual,2)

mes = Str(dataatual,2)

ano = Str(dataatual,4)

 

datanova = ano & "/" & mes & "/" & dd

 

RS("dataconsulta") = datanova

RS.update

 

uma pessoa ontem apagou o backup que tinha feito do BD, então não tenho mais para testar, por isso peço ajuda para não errar, se não as data gravadas vão para o espaço rsrssr

 

Obrigado

Ps. não estou conseguindo responder em bloco separado

Compartilhar este post


Link para o post
Compartilhar em outros sites

são quantos registros aproximadamente?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pode alterar via sql mesmo mas antes faça um backup

 

UPDATE TABELA SET DATA = CONCAT(RIGHT(DATA,4), '/', MID(DATA,4,2), '/', LEFT(DATA,2))

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal,

 

Obrigado. resolvi assim:

 

Fiz uma cópia do BD, usei a dica do Mário para converter a data, depois mudei o tipo do campo e por último usei a dica do xanburzum para mostrar a data no padrão que estamos acostumados.

 

Mais uma vez obrigado.

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.