如何将节点 Date() 插入到 PostgreSQL 时间戳列中?

7

我想同时更新多条记录,但我不知道该如何操作。

我已经尝试过使用pg-promise、moment和node等各种组合:

myTs = Date();
myTs = moment(new Date()).format("YYYY-MM-DD HH:mm:ss"); 

使用SQL:
UPDATE mytable set ts = $1;
UPDATE mytable set ts = $1::timestamp;

错误:

 time zone "gmt-0800" not recognized

1
你的错误信息声称该列具有不匹配的类型:BIGINT而不是TIMESTAMP。这是正确的吗?如果是,您需要将日期存储为数字格式,而不是ISO日期字符串。 - Connor
1
使用 timestamptz 作为数据库列类型,并直接插入 JavaScript 类型 Date。它会正常工作且正确无误。 - vitaly-t
1个回答

0

在数据库中以UTC格式而不带有时区的方式存储时间戳更好。

假设有一个表(PostgreSQL):

create table test_time (utc_time timestamp);

插入当前的UTC时间戳:

const res = await db.query({
  text: "insert into test_time (utc_time) values ($1) returning *",
  values: [new Date(new Date().toISOString())],
});

或者您可以根据运行时插入当前的带有时区的Date

const res = await db.query({
  text: "insert into test (date) values ($1) returning *",
  values: [new Date()],
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接