2017-09-16 30 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