Ir para conteúdo

Arquivado

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

Sorokabano

Como selecionar hora mais proxima

Recommended Posts

Pessoal , estou com a seguinte duvida.

 

Tenho 2 tabelas (AGENDA) onde tem os campos cod_veiculo e data/hora_prevista e a tabela (MARCAÇÃO) onde tem os campos cod_veiculo e data/hora marcada.

 

O que eu preciso, na tabela agenda tem a identificação do veiculo e a hora que é pra ele passar em determinado ponto. E na tabela marcação tem a identificação do veiculo e a hora que ele passou por esse ponto.

 

Porem como o veiculo vai passar varias vezes ao dia pelo mesmo ponto preciso saber como ligar o horario que ele passou com o horario que estava previsto, para poder calcular o atraso ou adiantamento do mesmo. EX:

 

(AGENDA)

 

0001 12/12/2009-12:35

0001 12/12/2009-12:55

0001 12/12/2009-13:40

 

 

(MARCAÇÃO)

 

0001 12/12/2009-12:40

 

Vendo isso, pegarei a marcação e verei qual data/hora esta mais proxima na tabela AGENDA (tanto pra mais quanto pra menos) que no caso é a de 12/12/2009-12:35

 

Vou pegar a hora(marcação) subutrair hora(agenda) e retornar o tempo que o carro esta atarasado ou adiantado, que no caso é 5 min atrasado

 

Então , minha duvida é, como selecionar a hora mais proxima.

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

UMA DICA

 

SELECT AGENDA.*,MARCACAO.*,ABS(AGENDA.DATA_PREVISTA - MARCACAO.DATA_EXIBICAO) DIFERENCA

FROM AGENDA , MARCACAO

WHERE AGENDA.COD_VEICULO = MARCACAO.COD_VEICULO

ORDER BY ABS(AGENDA.DATA_PREVISTA - MARCACAO.DATA_EXIBICAO) DIFERENCA

 

 

-----------

Uma subtração de datas retorna o número de dias (ou fração) entre elas.

Abs - retorna o valor absoluto de um número (p/ 1 retorna 1 para -1 retorna 1 pro exemplo)

 

Esta query pode ser melhorada

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.