根据时间戳查找最近的条目

时间:2016-10-07 07:55:13

标签: postgresql

我有一张桌子,每隔20分钟有一个关于天气的条目。例如,这将是时间戳列:

2007-01-01 00:00:00
2007-01-01 00:20:00

等等。现在,如果我有另一个时间戳,例如2007-01-01 00:07:53,我怎样才能在天气表中找到最接近此特定时间戳的条目?

1 个答案:

答案 0 :(得分:2)

如果你只想要一行,你可以这样做:

select *
from the_table
order by abs(extract(epoch from (the_timestamp_column - timestamp '2007-01-01 00:07:53')))
limit 1

abs(...)用于处理比存储在表中的时间戳更大或更小的时间戳。

如果提供的时间戳始终大于表中的最新时间戳,则可以将其简化为:

order by timestamp '2007-01-01 00:07:53' - the_timestamp_column