2013-12-16 71 views

回答

2

這裏是Rails的相當於你問有關

Model.where(%q{datetime_col - seconds_col * interval '1 second' < now()}) 

Model任何值,datetime_col,你使用seconds_col的。

+0

我建議從我的答案中複製sargable表達式,而不是次要表達式。 –

1

datetime?你的意思是timestamp我假設?我會進一步假設該表(因缺乏信息):

CREATE TABLE tbl (
    tbl_id serial PRIMARY KEY 
    ,ts  timestamp 
    ,seconds integer 
); 

其中datetime列值減去整數(時間跨度)值比當前時間早?

查詢很簡單:

SELECT * 
FROM tbl 
WHERE ts - seconds * interval '1 sec < now(); 

但它是更好地改造成一個sargable表達這樣的:

SELECT * 
FROM tbl 
WHERE ts < now() + seconds * interval '1 sec; 

now()是Postgres相當於標準形式CURRENT_TIMESTAMP的(你可以也使用)。

最近,相關的答案:
How do I convert date and seconds fields to a timestamp field in PostgreSQL?

相關問題