Postgres extract() 年份在插入中不起作用



我有这个插入查询:

INSERT INTO passation 
VALUES 
(default,0,0,0,0,SELECT extract(YEAR FROM now()),'Nouvelle Passation','Téléphonique',now(),'Normale',0) 

但是这一年不行,我不知道为什么,请帮忙,因为单独,它有效:

SELECT extract(YEAR FROM now())

这是Postgres错误:

ERROR:  syntax error at or near "SELECT"
LINE 2: ...default,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,SELECT ext...
                                                             ^
********** Erreur **********
ERROR: syntax error at or near "SELECT"
État SQL :42601
Caractère : 82

我必须将年份放入变量中吗?

不要使用

SELECT - 使用表达式 "按原样":

INSERT INTO passation 
VALUES 
(default,0,0,0,0,extract(YEAR FROM now()),'Nouvelle Passation','Téléphonique',now(),'Normale',0) 

在线示例:http://rextester.com/NBB7282


请注意,不指定目标列被认为是错误的编码风格。像这样:

 INSERT INTO passation (id, col1, col2, ....) 
 values ....

更好。


显然,您还试图将周数存储在另一列中。我不会那样做。只需将now()的值存储在一列中即可。这样,您就可以存储完整的信息,然后可以随时提取年,月,日,秒或任何您想要的信息。

INSERT 语句中删除SELECT

INSERT INTO passation 
VALUES (
   DEFAULT,
   0,
   0,
   0,
   0,
   extract(YEAR FROM now()),
   'Nouvelle Passation',
   'Téléphonique',
   now(),
   'Normale',
   0
); 

最新更新