PESQUISA MYSQL ENTRE DATAS
Olá pessoal!!
Estou com meu cérebro derretendo de tanto tentar 1200 formas diferentes de fazer um select entre datas e nenhuma funciona. O quadro é o seguinte:
Tenho um banco de dados em que uma coluna (text e não date - acho que o problema começa aqui) tem o seguinte formato [Ô]dd/MM/yyyy hh:mm:ss[Ô]. Observem que o registro foi feito com dia/mês/ano.
Tentei os seguintes códigos:
Nada disso funcionou. Onde está o erro? Será que vou ter que mudar o tipo de campo do meu banco de text para date ou para datetime?
Agradeço a atenção de vocês.
Estou com meu cérebro derretendo de tanto tentar 1200 formas diferentes de fazer um select entre datas e nenhuma funciona. O quadro é o seguinte:
Tenho um banco de dados em que uma coluna (text e não date - acho que o problema começa aqui) tem o seguinte formato [Ô]dd/MM/yyyy hh:mm:ss[Ô]. Observem que o registro foi feito com dia/mês/ano.
Tentei os seguintes códigos:
[Ô]Select * meuBanco Where Data between [ô]01/07/2015[ô] and [ô]13/07/2015[ô][Ô]
[Ô]Select * meuBanco Where Data between [ô]2015/07/01[ô] and [ô]2015/07/13[ô][Ô]
[Ô]Select * meuBanco Where Data between [ô]01-07-2015[ô] and [ô]13-07-2015[ô][Ô]
[Ô]Select * meuBanco Where Data between [ô]2015-07-01[ô] and [ô]2015-07-13[ô][Ô]
[Ô]Select * meuBanco Where Data between cast [ô]2015/07/01[ô] and [ô]2015//07/13[ô][Ô]
Nada disso funcionou. Onde está o erro? Será que vou ter que mudar o tipo de campo do meu banco de text para date ou para datetime?
Agradeço a atenção de vocês.
Segue como eu faço
where datapedido between [ô][Ô] & Format(TxtDataInicial.Text, [Ô]YYYY/MM/DD[Ô]) & [Ô][ô] and [ô][Ô] & Format(TxtDataFinal.Text, [Ô]YYYY/MM/DD[Ô]) & [Ô][ô] [Ô]
Seu campo terá que estar como tipo DATE ou DATETIME
where datapedido between [ô][Ô] & Format(TxtDataInicial.Text, [Ô]YYYY/MM/DD[Ô]) & [Ô][ô] and [ô][Ô] & Format(TxtDataFinal.Text, [Ô]YYYY/MM/DD[Ô]) & [Ô][ô] [Ô]
Seu campo terá que estar como tipo DATE ou DATETIME
amigo o ideal seria mudar mas....
tente assim usar o date:
[Ô]Select * from sua tabela Where date(Data) between [ô]01/07/2015[ô] and [ô]13/07/2015[ô][Ô]
ou
[Ô]Select * from sua tabela Where date(Data) between [ô]2015/07/01[ô] and [ô]2015/07/13[ô][Ô]
ou
[Ô]Select * from sua tabela Where date(Data) between [ô]2015-07-01[ô] and [ô]2015-07-13[ô][Ô]
tente assim usar o date:
[Ô]Select * from sua tabela Where date(Data) between [ô]01/07/2015[ô] and [ô]13/07/2015[ô][Ô]
ou
[Ô]Select * from sua tabela Where date(Data) between [ô]2015/07/01[ô] and [ô]2015/07/13[ô][Ô]
ou
[Ô]Select * from sua tabela Where date(Data) between [ô]2015-07-01[ô] and [ô]2015-07-13[ô][Ô]
Olá Alvaro e Luiz!! Primeiro quero agradecer a atenção de vocês.
Não corre o risco de apagar informações se eu mudar o tipo de Text para DATE com os campos já preenchidos??
Se eu entendi direito, essa seria a forma de formatar o campo text para date sem precisar alterar no banco de dados? Se for isso, não funcionou.
O problema não seria comparar o formato que além da data tem hora minutos e segundos ([Ô]dd/MM/yyyy hh:mm:ss[Ô]) com um formato que tem apenas data ([Ô]dd/MM/yyyy[Ô])?
ou o problema seria que no meu campo text está no formato brasileiro [Ô]dd/MM/yyyy hh:mm:ss[Ô] quando o certo seria no formato americano [Ô]yyyy/MM/dd hh:mm:ss[Ô]? Se for esse o caso, como formatar na query?
Citação:Seu campo terá que estar como tipo DATE ou DATETIME
Não corre o risco de apagar informações se eu mudar o tipo de Text para DATE com os campos já preenchidos??
Citação:[Ô]Select * from sua tabela Where date(Data) between [ô]2015/07/01[ô] and [ô]2015/07/13[ô][Ô]
Se eu entendi direito, essa seria a forma de formatar o campo text para date sem precisar alterar no banco de dados? Se for isso, não funcionou.
O problema não seria comparar o formato que além da data tem hora minutos e segundos ([Ô]dd/MM/yyyy hh:mm:ss[Ô]) com um formato que tem apenas data ([Ô]dd/MM/yyyy[Ô])?
ou o problema seria que no meu campo text está no formato brasileiro [Ô]dd/MM/yyyy hh:mm:ss[Ô] quando o certo seria no formato americano [Ô]yyyy/MM/dd hh:mm:ss[Ô]? Se for esse o caso, como formatar na query?
Acho muito mais fácil vc mudar o tipo do campo do que ficar adaptando as query.
O que vc pode fazer é criar uma coluna do tipo data e fazer um update depois excluir a antiga coluna e acabou o seu problema, eu ja fiz muito isso.
O que vc esta passando eu ja passei muito rsrsrs, e a melhor solução para acabar com minha dor de cabeça, foi trocar o tipo do campo, é rápido
Lógico tem que ver se vale a pena ter um pequeno trabalho agora, como disse, para mim foi
Porque assim, vc trocando o tipo do campo, terá que ver no(s) formulár(s)io onde vc esta gravando essa data, terá que mudar o código, tendo que implementar o comando para gravar a data no access, seria esse:
seucampo = #[Ô] & format(seutext,MM/DD/YYYY[Ô]) & [Ô]# [Ô]
Caso vc ache que seja vantajoso trocar o campo, o código ficaria algo assim
update seubanco set novocampodata = campodataatual
A única coisa que vc tem que observar é se o campo esta com os dados no formato de data, que é para serem reconhecidos corretamente pelo novo campo, só isso
Depois excluir o campo antigo e renomear o novo campo para o nome antigo, para não dar problema no projeto com a troca de nome
O que vc pode fazer é criar uma coluna do tipo data e fazer um update depois excluir a antiga coluna e acabou o seu problema, eu ja fiz muito isso.
O que vc esta passando eu ja passei muito rsrsrs, e a melhor solução para acabar com minha dor de cabeça, foi trocar o tipo do campo, é rápido
Lógico tem que ver se vale a pena ter um pequeno trabalho agora, como disse, para mim foi
Porque assim, vc trocando o tipo do campo, terá que ver no(s) formulár(s)io onde vc esta gravando essa data, terá que mudar o código, tendo que implementar o comando para gravar a data no access, seria esse:
seucampo = #[Ô] & format(seutext,MM/DD/YYYY[Ô]) & [Ô]# [Ô]
Caso vc ache que seja vantajoso trocar o campo, o código ficaria algo assim
update seubanco set novocampodata = campodataatual
A única coisa que vc tem que observar é se o campo esta com os dados no formato de data, que é para serem reconhecidos corretamente pelo novo campo, só isso
Depois excluir o campo antigo e renomear o novo campo para o nome antigo, para não dar problema no projeto com a troca de nome
[Ô]Select * from sua tabela Where date(Data) between date([ô]01/07/2015[ô]) and date([ô]13/07/2015[ô])[Ô]
ou
[Ô]Select * from sua tabela Where date(Data) >=date([ô]01/07/2015[ô]) and date(Data) <= date([ô]13/07/2015[ô])[Ô]
tente a ultima vez ai kkk
ou
[Ô]Select * from sua tabela Where date(Data) >=date([ô]01/07/2015[ô]) and date(Data) <= date([ô]13/07/2015[ô])[Ô]
tente a ultima vez ai kkk
Guys!! MUITO OBRIGADO aos dois, mas o problema era na forma que eu estava montando a query. Tinha uma série de condições para a montagem da query e havia um erro nessa montagem. Vou dividir os créditos para os dois pois testando as dicas de cada um, vi que as duas funcionam.
VALEU!!!!
VALEU!!!!
Tópico encerrado , respostas não são mais permitidas