PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Postgresql - obtém a linha de data e hora mais próxima em relação ao valor de data e hora

select id, passed_ts - ts_column difference
from t
where
    passed_ts > ts_column and positive_interval
    or
    passed_ts < ts_column and not positive_interval
order by abs(extract(epoch from passed_ts - ts_column))
limit 1

passed_ts é o parâmetro timestamp e positive_interval é um parâmetro booleano. Se for verdadeiro, somente as linhas em que a coluna de carimbo de data/hora for menor que o carimbo de data/hora passado. Se falso o inverso.