在 PostgreSQL 中创建间隔的不同方法

Different ways of creating intervals in PostgreSQL

我最近遇到了这种在 PostgreSQL 中使用 interval 类型的方法:

SELECT CURRENT_DATE + INTERVAL '1' month;
      ?column?       
---------------------
 2018-11-22 00:00:00

docs 看来,“正确”的做法应该是:

SELECT CURRENT_DATE + INTERVAL '1 month';
      ?column?       
---------------------
 2018-11-22 00:00:00

这两个查询是否等价?以前的语法记录在哪里?

第一个语法是SQL标准语法:

<interval literal> ::= INTERVAL [ <sign> ] <interval string> <interval qualifier>

<interval qualifier> ::=
    <start field> TO <end field>
  | <single datetime field>

我会省去 <start field><end field><single datetime field> 的定义,但本质上它们可以取值 YEARMONTHDAYMINUTESECOND.

PostgreSQL 不支持 <sign>,您必须将其添加到字符串中。

这里有几个示例:

INTERVAL '1-10' YEAR TO SECOND
INTERVAL '20:03:15' DAY TO SECOND
INTERVAL '1' DAY