2013-07-28 90 views
0

的表變更的SQL是:PostgreSQL的INSERT查詢時間戳返回錯誤42601字第191

CREATE TABLE changesets 
    (
     changeset_id bigint NOT NULL, 
     user_id integer NOT NULL, 
     created_at timestamp with time zone, 
     closed_at timestamp with time zone, 
     open boolean, 
     min_lat double precision, 
     min_lon double precision, 
     max_lat double precision, 
     max_lon double precision, 
     CONSTRAINT pk_changeset PRIMARY KEY (changeset_id) 
    ) 
    WITH (
     OIDS=FALSE 
    ); 
    ALTER TABLE changesets 
     OWNER TO postgres; 

我試圖運行查詢:

INSERT INTO changesets (changeset_id,user_id,open,min_lat,min_lon,max_lat,max_lon,created_at,closed_at) 
SELECT 16465146,1315463,false,27.6785105,85.3408257,27.6849711,85.350291,2013-06-08T06:29:51Z,2013-06-08T06:32:52Z 
WHERE NOT EXISTS (SELECT * FROM changesets WHERE changeset_id=16465146); 

但它引發錯誤:

ERROR: syntax error at or near ":" 
LINE 1: ...5105,85.3408257,27.6849711,85.350291,2013-06-08T06:29:51Z,20... 
                  ^

********** Error ********** 

ERROR: syntax error at or near ":" 
SQL state: 42601 
Character: 191 

如果我刪除了created_at,closed_at目標列IND其時間戳-VA從SQL中取出2013-06-08T06:29:51Z,2013-06-08T06:32:52Z,然後sql成功執行。

這個SQL有什麼問題?是否有問題: - 時間戳?

感謝,

回答

1

通時間戳作爲字符串文字
參考documentation

儘量此插入:

INSERT INTO changesets 
(changeset_id,user_id,open,min_lat,min_lon,max_lat,max_lon,created_at,closed_at) 
SELECT 16465146,1315463,false,27.6785105,85.3408257,27.6849711,85.350291, 
     '2013-06-08T06:29:51Z','2013-06-08T06:32:52Z' 
WHERE NOT EXISTS (SELECT * FROM changesets WHERE changeset_id=16465146); 

甚至更​​好的給他們喜歡這裏明確的類型:

INSERT INTO changesets (changeset_id,user_id,open,min_lat,min_lon,max_lat,max_lon,created_at,closed_at) 
SELECT 16465146,1315463,false,27.6785105,85.3408257,27.6849711,85.350291, 
TIMESTAMP WITH TIME ZONE '2013-06-08T06:29:51Z', 
TIMESTAMP WITH TIME ZONE '2013-06-08T06:32:52Z' 
WHERE NOT EXISTS (SELECT * FROM changesets WHERE changeset_id=16465146); 
+0

謝謝。兩種方法都奏效。現在我正在閱讀文檔。 –

+0

請不要鏈接到舊版本的文檔。使用'docs/current/static'而不是'docs/8.4/static'。 –