Ir para conteúdo
Fórum Script Brasil
  • 0

Comparação de datas


Silvio luis

Pergunta

Bom dia

Tenho essa comparação de datas(simples), se primeira data for menor então verdadeiro senão falso.

07/04/2010 <= 09/01/2010

o detalhe é: parece que ele esta usando somente o dia para fazer essa comparação, pois se deixar o dia menor na segunda data funciona beleza, mas se o dia da segunda data for maior, a comparação foi ...

Silvio

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

Normalmente o melhor é fazer isso no proprio select usando between... caso não seja possível aconselho usar a função cdate para formatar as datas e comparalas...

ex.:

datai = Cdate(month (datai) &"/"& day (datai) &"/"& year (datai))
dataf = Cdate(month (dataf) &"/"& day (dataf) &"/"& year (dataf))

if datai < dataf then
'...
end if

[]'s

Link para o comentário
Compartilhar em outros sites

  • 0

cara,

estou tendo o mesmo problema no select

veja como eu montei ele,

SELECT CLIENTES.cliente_id, CLIENTES.cliente_nome, CLIENTES.cliente_aniversario, CLIENTES.cliente_anotacoes, CLIENTES.cliente_estrela, CLIENTES.cliente_celular, CLIENTES.cliente_telefone, CLIENTES.cliente_telefone1, CLIENTES.cliente_sexo, CLIENTES.id, CLIENTES.cliente_tipo, CLIENTES.cliente_historico, CLIENTES.cliente_email, CLIENTES_TIPO.tipo_nome, CLIENTES.cliente_idade, DAY(CLIENTES.cliente_aniversario) AS Expr1, MONTH(CLIENTES.cliente_aniversario) AS Expr2, ENTREGA.entrega_status FROM CLIENTES INNER JOIN CLIENTES_TIPO ON CLIENTES.cliente_tipo = CLIENTES_TIPO.tipo_id INNER JOIN ENTREGA ON CLIENTES.cliente_id = ENTREGA.entrega_cliente WHERE (CLIENTES.id = 3) AND (2010-month(clientes.cliente_aniversario)-day(clientes.cliente_aniversario)) <= (2010-01-11) AND (CLIENTES.id = 3) AND (ENTREGA.entrega_status = 0 OR ENTREGA.entrega_status = 2) ORDER BY month(CLIENTES.cliente_aniversario)

Link para o comentário
Compartilhar em outros sites

  • 0

o problema desse select parace ser o mesmo do primeiro questionamento.

a função dele é mostrar os aniversários que ainda vão acontecer no ano de 2010 sempre como base a data atual.

hoje por exemplo é 12/01/2010

os data menor do que 12, mesmo sendo de outros meses que virão ainda ele não mostra. parece que sempre usa o dia como base e não a data toda.

conseguiu entender?

Silvio

Link para o comentário
Compartilhar em outros sites

  • 0

Acho que na query você terá de trabalhar com o formato americano de datas (mm/dd/yyyy) mesmo elas estando no formato brasileiro no BD.

além disso, nunca esqueça que a sintaxe correta para se trabalhar com datas em qualquer query é:

#"& (data) &"#

ou seja:

sql = "select * from sua tabela where campo_data >= #"& (var_data) &"#

Testa aí e posta os resultados...

[]'s

Link para o comentário
Compartilhar em outros sites

  • 0

Fala Kuroi, concordo com você!

Entre o formato brasileiro e o americano é melhor trabalhar com o americano e só na hora de imprimir em tela passar pro Brasileiro.

No entanto tem uma outra forma que dá menos incomodação ainda e que passei a usar já há alguns anos:

Eu não trabalho mais com campo no formato data e sim com tres campos no formato numero, ex.:

CampoDDi = rs("CampoDDi")
CampoMMi = rs("CampoMMi")
CampoYYi = rs("CampoYYi")

datai = CampoDDi &"/"& CampoMMi &"/"& CampoYYi

Não tem erro... incomoda um pouquinho mais na hora de fazer querys (principalmente com between) mas no geral é bem mais fácil...

[]'s

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...