2012-04-21 58 views
8

超过3岁。在那一刻我有一个包含4个日期表:检查,如果日期是在PostgreSQL的

CREATE TABLE dates (
date date 
); 

    11-mar-2008 
    25-now-2007 
    18-apr-2012 
    20-apr-2012 

我想有一个说法在哪里可以找到早于所有日期三岁。这应该是前两个日期。

到目前为止,我有:

SELECT * FROM dates WHERE date = now()::-1095; 

但这不起作用。

任何帮助将不胜感激。

回答

15

试试这个:

SELECT * FROM dates WHERE date < now() - '3 years'::interval; 

此外,命名您的列date是不是一个好的做法,因为这是PostgreSQL中保留字。

+3

为了挑剔,它是SQL标准中的一个保留字,尽管PostgreSQL没有发现它需要保留它。为了便于携带和面向未来,避免将其用作标识符可能仍然是明智之举。 http://www.postgresql.org/docs/current/interactive/sql-keywords-appendix.html – kgrittn 2012-04-21 14:37:23