Ir para conteúdo

POWERED BY:

Arquivado

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

Jayson

Comparação de datas! Que zica meu!

Recommended Posts

ae pessoal... bolei um sisteminha de banner rotativo pro meu site, tava funcionando beleza... daí eu inventei de colocar um campo no db chamado fim, tipo: Data/Hora e subtipo: Data Abreviada

esse campo determina a data do fim de veiculação do banner...

 

o q acontece é q exemplificando:

data do server: 6/7/2003 (dd/mm/aaaa)

3 banners cadastrados, o campo fim deles:

1 - 2/7/2004

2 - 2/7/2003

3 - 8/7/2003

 

em teoria exibiria somente os banner 1 e 3, porem ele exibe os tres banners.... pra postar meu codigo fica meio dificil...

 

entaum estou disponibilizando somente meu sitema de banners rotativos...

se alguem q puder, peço q veja pq naum está comparando as datas...

 

Baixar o sitema de banner. Clique aqui! (18kb)

 

Obs. Ja tentei de tudo, colocar o campo fim em texto, data geral, usar date, Now(), day()/month()/Year... pra recuperar a data, mas num da certo de jeito nenhum....

 

aguardo uma ajuda urgente!

 

Grande abraço

 

Jayson

Compartilhar este post


Link para o post
Compartilhar em outros sites

é soh você usar no SELECT o teste pra selecionar somente os registros onde o campo Fim é menor igual q a data atual:

"SELECT * FROM Table WHERE Fim <= #" & Month(Now()) & "/" & Day(Now()) & "/" & Year(Now()) & "#"

mais isso soh funciona no Access, no SQL Server é diferente... :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Este fim de semana tive um problema muito parecido... O que pode estar acontecendo é um problema de compatibilidade entre formato de datas.O banco pode estar armazenando em MM/DD/AA e você pode estar tentando filtrar por DD/MM/AAServer: 6/7/2003 1 - 2/7/20042 - 2/7/20033 - 8/7/2003Para exibir apenas o banner 3, você colocaria:WHERE DATA > #6/7/03# vai lhe retornar apenas o banner 3.Aqui, quando eu abro o banco, eu vejo a data no formato brasileiro (!!!!)Mas para você filtrar de verdade, tem que fazer o WHERE usando a data no formato americado, ou seja:de vez usar 6/7/03, você vai ter que usar 7/6/03Aí, para inverter a data, você vai ter outro problema:Como inverter 20/12/2003 para 12/20/2003? você primeiro pega a substring dos primeiros 5 caracteres de 20/12/2002, aí você vai ter "20/12/".Depois pega a substring de trás pra frente da data toda (20/12/2003) pegando só os dois ultimos caracteres, ou seja, o ano "03".Aí você contatena "20/12/" com "03" Aí você vai ter a data quase como precisa. Agora precisa só inverter usando substring também...Mas isso nao vai funcionar se você tiver uma data com length menor, por exemplo:você jah sabe como inverter 20/12/2003 mas, e como inverter 1/12/2003 se ela tem menos caracteres?Antes de fazer qualquer inversao, você vai precisar formatar a data para ela sempre ter o length maximo (10, como "dd/mm/aaaa".Eu tenho isso em casa, se precisar me manda uma private message...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aí, para inverter a data, você vai ter outro problema:Como inverter 20/12/2003 para 12/20/2003? você primeiro pega a substring dos primeiros 5 caracteres de 20/12/2002, aí você vai ter "20/12/".Depois pega a substring de trás pra frente da data toda (20/12/2003) pegando só os dois ultimos caracteres, ou seja, o ano "03".Aí você contatena "20/12/" com "03" Aí você vai ter a data quase como precisa. Agora precisa só inverter usando substring também...Mas isso nao vai funcionar se você tiver uma data com length menor, por exemplo:você jah sabe como inverter 20/12/2003 mas, e como inverter 1/12/2003 se ela tem menos caracteres?Antes de fazer qualquer inversao, você vai precisar formatar a data para ela sempre ter o length maximo (10, como "dd/mm/aaaa".Eu tenho isso em casa, se precisar me manda uma private message...

não precisa fazer esse monte de coisa pra transformar dd/mm/aaaa para mm/dd/aaaa ... faça apenas isso:Exemplo:Data = "06/07/2003"NovaData = Month(Data) & "/" & Day(Data) & "/" & Year(Data)A NovaData será igual a: "07/06/2003" :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

ae pessoal... valeu as dicas.. mas matei o problema de um outro jeito...coloquei um while wend pra comparar as datas fora da sql fico mais ou menos assim:While cdate(rsBanner("fim")) <= cdate(date)rsBanner.MovenextWendresolveu meu problema... valeu pessoal... abraço. Jayson.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ae pessoal... valeu as dicas.. mas matei o problema de um outro jeito...coloquei um while wend pra comparar as datas fora da sql fico mais ou menos assim:While cdate(rsBanner("fim")) <= cdate(date)rsBanner.MovenextWendresolveu meu problema... valeu pessoal... abraço. Jayson.

dessa maneira pode ser q não pegue todos os registros.. além de ficar mais lenta a pesquisa.. tente usar diretamente no SQL :D

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.