Localizar a data mais próxima

Delphi

06/05/2005

Pessoal, Bom dia!
Preciso fazer uma select que me retorne a data mais próxima em uma sequencia de datas.
na Tabela tenho Data,Valor,Produto. Populada com varios registros.

ex: quero buscar no campo data desta tabela a mais proxima de 01/01/2005.


Marioribeiro

Marioribeiro

Curtidas 0

Respostas

Kotho

Kotho

06/05/2005

Qual o banco?


GOSTEI 0
Marioribeiro

Marioribeiro

06/05/2005

FireBird 1.5


GOSTEI 0
Kotho

Kotho

06/05/2005

Me surgiu uma outra dúvida... você quer a mais próxima tanto menor quanto maior??? ou somente maior??? ou somente menor???


GOSTEI 0
Edilcimar

Edilcimar

06/05/2005

coloque between data - xdias e data + ydias


GOSTEI 0
Marioribeiro

Marioribeiro

06/05/2005

poderia ser mais expecifico? o q são xdias e ydias, eu não tenho esses dados! e nem como especifica-los.


GOSTEI 0
Edilcimar

Edilcimar

06/05/2005

assim você vê os dados entre duas datas, a data desejada - xdias e a data desejada + ydias


GOSTEI 0
Marioribeiro

Marioribeiro

06/05/2005

meu amigo, eu não tenho como especificar xdias e ydias.
Uma tabela é de preço e a outra tem a data da venda. O que preciso é que ao digitar a data da venda ele busque na tabela de preços quanto este produto custava naquela data.


GOSTEI 0
Marioribeiro

Marioribeiro

06/05/2005

Pessoal preciso disso meio urgente, alguem sabe?


GOSTEI 0
Rjun

Rjun

06/05/2005

Não conheço muito de firebird, mas não tem como você fazer uma função para rodar no servidor. Com um SELECT você pega a data mais próxima antes da data desejada e com outro você pega a data mais próxima depois da desejada. Ai você compara e retorna a data mais próxima


GOSTEI 0
Kotho

Kotho

06/05/2005

então você quer a data mais próxima para traz, não é?

Se for, você pode fazer um SELECT meio doido, mais ou menos assim:

SELECT
  VALOR
FROM
  TABELA_PRECO
WHERE
  DATA = (SELECT MAX(TP2.DATA)
     FROM TABELA_PRECO TP2
     WHERE TP2.DATA < DATA_DA_VENDA)



GOSTEI 0
Marioribeiro

Marioribeiro

06/05/2005

Não deu certo meu amigo, obrigado


GOSTEI 0
Kotho

Kotho

06/05/2005

Colega,

Você poderia me dizer porque não deu certo??? Que valor retornou??? Era para funcionar...

Eu não coloquei o produto no select de exemplo que eu passei, será que não faltou isso?

ficaria assim:

SELECT 
  VALOR 
FROM 
  TABELA_PRECO 
WHERE 
  DATA = (SELECT MAX(TP2.DATA) 
     FROM TABELA_PRECO TP2 
     WHERE TP2.DATA < DATA_DA_VENDA
     AND TP2.PRODUTO = PRODUTO_DA_VENDA) 



GOSTEI 0
POSTAR