O q estou fazendo errado nesta instrucao sql ? (MySQL)

MySQL

26/09/2006

estou usando o componente zeus,,

e fazendo um select assim,

select datagerais from tbps where (datagerais between ´30/07/2006´ and ´30/09/2006´)


no caso é pra ele me trazer todos os registros q estao ENTRE as datas escolhidas... certo ?

mas ele me traz esse resultado:

30/07/2006
30/07/2006
30/07/2006
30/08/2006


mas ainda ha valores intermediarios q ele nao esta mostrando como o 01/09/2006, 05/09/2006.

Parece que ele esta pegando apenas o dia...

Como arruma isso ?


Geisonc

Geisonc

Curtidas 0

Respostas

Geisonc

Geisonc

26/09/2006

ja achei o erro galera... o campo data tava como string e nao data...
Obrigado.


GOSTEI 0
Geisonc

Geisonc

26/09/2006

bom pessoal, mesmo alterando o tipo do campo para data, nao adiantou. aguem sabe me dizer o porque que ele nao seleciona apenas os registros entre as datas escolhidas ?

Obrigado.


GOSTEI 0
Raserafim

Raserafim

26/09/2006

tente assim:
select datagerais from tbps where (cast(datagerais as date) between ´30/07/2006´ and ´30/09/2006´)



GOSTEI 0
Mysys

Mysys

26/09/2006

olha pelo menos nas conf. do meu MySQL vc so precisa inverter a data

tipo
select datagerais from tbps where (datagerais between ´2006-07-30´ and ´2006-09-30´)


GOSTEI 0
Geisonc

Geisonc

26/09/2006

fazendo do jeito que o raserafim falou,

select datagerais from tbps where (cast(datagerais as date) between ´30/07/2006´ and ´30/09/2006´) 


gera um erro...

Truncated incorrect datetime value: ´29/09/2006´


e como o campo nao esta definido como tipo data, creio que é a unica resposta cabivel, resta apenas ver o pq do erro..

Alguem pode ajudar ?


GOSTEI 0
Marlon.andrei

Marlon.andrei

26/09/2006

É a data, tenta o seguinte:

select datagerais from tbps where datagerais between ´2006-07-30´ and ´2006-09-30´

Além disso, ve se seu mysql esta case-sensitive, se estiver, tem q ser tudo exatamente igual a gravacao fisica (maiusculo e minusculo)

Flow


GOSTEI 0
POSTAR