我有一张桌子,每隔20分钟有一个关于天气的条目。例如,这将是时间戳列:
2007-01-01 00:00:00
2007-01-01 00:20:00
等等。现在,如果我有另一个时间戳,例如2007-01-01 00:07:53
,我怎样才能在天气表中找到最接近此特定时间戳的条目?
答案 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