在 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>
的定义,但本质上它们可以取值 YEAR
、MONTH
, DAY
、MINUTE
或 SECOND
.
PostgreSQL 不支持 <sign>
,您必须将其添加到字符串中。
这里有几个示例:
INTERVAL '1-10' YEAR TO SECOND
INTERVAL '20:03:15' DAY TO SECOND
INTERVAL '1' DAY
我最近遇到了这种在 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>
的定义,但本质上它们可以取值 YEAR
、MONTH
, DAY
、MINUTE
或 SECOND
.
PostgreSQL 不支持 <sign>
,您必须将其添加到字符串中。
这里有几个示例:
INTERVAL '1-10' YEAR TO SECOND
INTERVAL '20:03:15' DAY TO SECOND
INTERVAL '1' DAY