2017-09-16 75 views
1

我正在嘗試INSERT未來的日期到Postgres 9.6.2的表中timestamp with time zone列。我希望這個日期成爲當前交易時間加上任意時間間隔,例如1小時。 我知道如何在SELECT語句中進行日期/時間運算,但NOW() + INTERVAL '1 hour'的語法在INSERT語句中似乎不是有效的。如何現在INSERT()+ INTERVAL在Postgres 9.x

除了在應用程序級別完成此操作,是否可以使用日期/時間算法使用單個INSERT語句來完成此操作?如果不是,這種情況下最好的做法是什麼?

回答

2

我想你是正確的 - 這工作對我來說:

insert into barcode (id,barcode,active,created,updated) 
    values (111,'23432', true, NOW() + INTERVAL '1 hour',NOW()); 

我正在運行的Postgres 9.4.13。

+0

這很有趣。您提供的SQL完全按照我的需要工作,並且完全按照我的預期這會正常工作,但只有在使用此語法運行完整查詢時纔會如此。當用我的node.js中間件和pgadmin運行查詢時,出現語法錯誤。 '錯誤:類型時間戳與時區無效的輸入語法:「NOW()+ INTERVAL'1小時''' 有沒有什麼我在這裏丟失關於與引號一起使用的正確語法?當你編輯表格數據時,我得到的印象是pgadmin在值附近加引號。 – ajxs

+2

這可能是一個逃避問題引用 – user2182349

+1

你是對的。這是引用的一個逃避問題。它看起來像postgres無法解析表達式'NOW()+ INTERVAL'1小時'',如果它包裹在雙引號中。這很混亂。自從您正確回答我的初始查詢後,將您標記爲正確答案!謝謝! – ajxs