2016-11-06 66 views
1

我使用EXPIRY列作为存储历元时间的bigint。我需要找到所有将在未来48小时内过期的记录。 事情是这样的:PostgreSQL获取将在未来2天内过期的记录

select * from bottles where current_epoch_time - EXPIRY < 48 hours 

我还需要订购的记录,以便将首先过期瓶应该是第一个记录,这将最后应该是最后一个记录过期瓶。

我希望我能够明确我的问题。

在此先感谢

回答

1

这里有一个方法:

select b.* 
from bottles b 
where EXPIRY >= extract(epoch from now()) and 
     EXPIRY < extract(epoch from (now() + interval '48 hours')) 

请注意,所有的功能和计算不在EXPIRY。这使Postgres更容易在该列上使用索引 - 加快查询速度。

+0

谢谢戈登,完美的回答:) – Ashutosh