sql >> Base de Datos >  >> RDS >> PostgreSQL

Postgresql:obtenga la fila de fecha y hora más cercana en relación con el valor de fecha y hora dado

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 es el parámetro de marca de tiempo y positive_interval es un parámetro booleano. Si es verdadero, solo las filas donde la columna de la marca de tiempo es más baja que la marca de tiempo pasada. Si es falso, al revés.