INTERVALO DE DATAS NO SQL
Estou querendo fazer a seguinte consulta:
Estou utilizando o Windows Vista e linguagem VB6, a consulta mostra só esta filtrando o dia e está desconsiderando o mês.
[Ô]SELECT * FROM Tabela WHERE Data BETWEEN #[Ô] & Format(Data1.text, [Ô]mm/dd/yyyy[Ô]) & [Ô]# AND # [Ô] & Format(Data2.text, [Ô]mm/dd/yyyy[Ô]) & [Ô]# ORDER BY Data[Ô]
Estou utilizando o Windows Vista e linguagem VB6, a consulta mostra só esta filtrando o dia e está desconsiderando o mês.
Carlos bom dia !!
Carlos eu cheguei a ter esse problema, e corrigi criando duas variáveis do tipo data e substitui e também o que você pode fazer é colocar um cdate na frente do date1 e data2
Assim:
format(cdate(data2.text),[Ô]mm\dd\yyyy[Ô])
Acho que isso pode te ajudar
Carlos eu cheguei a ter esse problema, e corrigi criando duas variáveis do tipo data e substitui e também o que você pode fazer é colocar um cdate na frente do date1 e data2
Assim:
format(cdate(data2.text),[Ô]mm\dd\yyyy[Ô])
Acho que isso pode te ajudar
Esta problema é tipico do vb6,para vc resolvelo ,o melhor seria gravar as datas em padrão americano no banco de dados no formato YYYY/MM/DD.
Um exemplo 26/11/2009 e 05/12/2009 qual desses é maior? o vb6 identifica como maior o 26/11/2009
agora se vc fizer assim 2009/11/26 e 2009/12/05 concorda que é numero maior é 2009/12/05.
Por isso no vb6 é recomendavel gravar data invertida.
Porem quando for fazer a consulta não sera recomendavel usar Bettween,vc tera que fazer assim
WHERE DATA1 >= [ô]2009/11/26 AND DATA2 <= [ô]2009/12/05[ô]
Não esquecendo que no vb6 não é recomendavel usar o campo datetime so sql,use char(10)
Espero que tenho valido essa dica!!
Um exemplo 26/11/2009 e 05/12/2009 qual desses é maior? o vb6 identifica como maior o 26/11/2009
agora se vc fizer assim 2009/11/26 e 2009/12/05 concorda que é numero maior é 2009/12/05.
Por isso no vb6 é recomendavel gravar data invertida.
Porem quando for fazer a consulta não sera recomendavel usar Bettween,vc tera que fazer assim
WHERE DATA1 >= [ô]2009/11/26 AND DATA2 <= [ô]2009/12/05[ô]
Não esquecendo que no vb6 não é recomendavel usar o campo datetime so sql,use char(10)
Espero que tenho valido essa dica!!
Qual é o banco de dados q vc está utilizando?!?
Se você estiver usando o SQL SERVER recomendo duas mudanças na sua consulta:
1º Não utilize o BETWEEN é melhor utilizar >= e <=
2º Utilize a função CONVERT do SQL, nunca mais terá problemas com formato de data
1º Não utilize o BETWEEN é melhor utilizar >= e <=
2º Utilize a função CONVERT do SQL, nunca mais terá problemas com formato de data
SELECT * FROM Tabela WHERE (Data >= CONVERT(DATETIME, [ô][Ô] & Format(Data1.text, [Ô]mm/dd/yyyy[Ô]) & [Ô], 103)) AND (Data <= CONVERT(DATETIME, [Ô] & Format(Data2.text, [Ô]mm/dd/yyyy[Ô]) & [Ô], 103)) ORDER BY Data
Já descobri o problema! O campo Data na base está como testo, após converte para um campo Data/Hora, o problema foi resolvido. Valeu pela ajuda!
Tópico encerrado , respostas não são mais permitidas