Comparação de Datas

Alguem sabe como posso comparar uma data, tipo…

Quero pegar no banco todas as linhas no banco que estao entre

12/04/03 até 20/05/03.

Pois quando dou um SELECT no meu banco ele pega valores do tipo

15/06/03 - 18/06/03.

Será que seria pq o dia da data está entre o dia que eu pedi no SELECT?

Alguem tem alguma solução

cara, vou te dar duas dicas…vc pode usar o metodo compareTo() para comparar datas ou ate mesmo usar o subString(), onde vc ira passar a posição da string, ou seja, no caso, vc quer detalhar o dia, entao vc pega o dia como uma subString e compara ela…
Sei la, foi uma ideia…da uma olhada ai se funciona…!!

ate mais…

Se estiver usando SQL Server:

Select Data From Tabela Where Data Between ‘20030412’ And ‘20030521’

Nesse caso, você coloca a data invertida para informar ao SQL que vc está passando uma data em formato universal. e a última data deve ser acrescida em 1 dia pois é exclusive.

Se estiver usando Oracle:

Select Data From Tabela Where Data Between to_date(‘12/04/2003’, ‘dd/mm/yyyy’) And to_date(‘21/05/2003’, ‘dd/mm/yyyy’);

Não lembro direito se é to_date(‘12/04/2003’, ‘dd/mm/yyyy’) ou to_date(‘dd/mm/yyyy’, ‘12/04/2003’).

E vc sabe em Access, pois estou utilizando Access?

em access eu nao sei nao

Tente isso:

SELECT * FROM tabela where campo_data Between cdate("12/04/2003") and cdate("20/05/2003")

ou

Select * from tabela where campo_data >= cdate("12/04/2003") and campo_data <= cdate("20/05/2003")

acho q resolve…

o problema ai é q a função Cdate() vai se confundir na hora do conversão, pois se você enviar como parâmetro uma data com o dia abaixo de 13 como em “12/11/2002”, o Cdate() pode converter para 11 de dezembro de 2002 e não para 12 de novembro de 2002 como o usuário quer. isso devido à configuração de data do servidor que pode estar como mes/dia/ano.