2016-03-28 136 views
3

我想插入TIMESTAMP爲列LAST_LOGIN插入時間戳到PostgreSQL表

CREATE TABLE USER(
ID INTEGER NOT NULL, 
USER_NAME TEXT, 
FIRST_NAME TEXT, 
LAST_NAME TEXT, 
LAST_LOGIN DATE, 
DATE_REGISTERED DATE, 
ROLE INTEGER, 
CAN_LOGIN INTEGER 
) 
; 

ALTER TABLE USER ADD CONSTRAINT KEY1 PRIMARY KEY (ID) 
; 

我嘗試這樣做:

UPDATE USERS SET LAST_LOGIN = TIMESTAMP WHERE USER_NAME = ? 

,但我得到org.postgresql.util.PSQLException: ERROR: column "timestamp" does not exist Position: 31

什麼是插入正確的方法當前時間轉換爲表格列LAST_LOGIN?

回答

3

TIMESTAMP不是一個已知的功能POSTGRES,因此,將其識別爲一個列。

POSTGRES日期/時間功能:

NOW(); 
current_date; 
current_time; 
current_timestamp; 

所以,你正確的查詢應該是

UPDATE USERS SET LAST_LOGIN = now() WHERE USER_NAME = ? 

You can read all about postgres time/date functions in this document.

+0

好的,我可以使用CURRENT_TIMESTAMP作爲Oracle時間戳嗎? –

+0

Now()返回'TIME STAMP WITHOUT TIME ZONE',注意根據他的表'LAST_LOGIN'列的類型是'Date'。這對於這個特定的查詢不會有太大的區別,但最好使用'current_date'。 – Elad

1

也許錯誤來自使用錯誤的功能。試試這個:

UPDATE USERS SET LAST_LOGIN = CURRENT_TIMESTAMP WHERE USER_NAME = ? 
+0

@Peter Penzov,即使我的回答是早期,集鷺的答案被接受因爲它更詳細並且具有正確的參考。 –