带时区的时间戳类型的无效输入语法
invalid input syntax for type timestamp with time zone
我正在尝试将具有不同小时间隔的时间戳动态插入到 Postgres (12.1)、NodeJS 10.15.3 和 Knex 中。
通过 Postico 直接插入 Postgres,NOW() + INTERVAL 'n hours'
格式工作正常:
insert into users (first_name, updated_at)
values ('Bob', NOW() + INTERVAL '2 hours');
通过 Knex 插入时,
row.updated_at = `NOW() + INTERVAL '2 hours'`;
我遇到错误:
invalid input syntax for type timestamp with time zone: "NOW() + INTERVAL '2 hours'"
通过query.toString()输出查询,我看到区间已经转换为
'NOW() + INTERVAL ''2 hours'''
如何以正确的格式插入?
knex 正在将您的输入转换为 string
并将其传递给数据库,它希望 db 将其解析为有效的时间戳。为避免 knex 将您的输入用双引号引起来,您需要将其指定为文字值。方法是使用 raw
row.updated_at = knex.raw("NOW() + INTERVAL '2 hours'");
其中 knex
是您用来实例化与数据库的连接的变量。
我正在尝试将具有不同小时间隔的时间戳动态插入到 Postgres (12.1)、NodeJS 10.15.3 和 Knex 中。
通过 Postico 直接插入 Postgres,NOW() + INTERVAL 'n hours'
格式工作正常:
insert into users (first_name, updated_at)
values ('Bob', NOW() + INTERVAL '2 hours');
通过 Knex 插入时,
row.updated_at = `NOW() + INTERVAL '2 hours'`;
我遇到错误:
invalid input syntax for type timestamp with time zone: "NOW() + INTERVAL '2 hours'"
通过query.toString()输出查询,我看到区间已经转换为
'NOW() + INTERVAL ''2 hours'''
如何以正确的格式插入?
knex 正在将您的输入转换为 string
并将其传递给数据库,它希望 db 将其解析为有效的时间戳。为避免 knex 将您的输入用双引号引起来,您需要将其指定为文字值。方法是使用 raw
row.updated_at = knex.raw("NOW() + INTERVAL '2 hours'");
其中 knex
是您用来实例化与数据库的连接的变量。