gpt4 book ai didi

node.js - 使用 node-postgres 获取 UTC 格式的 Postgres "timestamp without timezone"

转载 作者:IT老高 更新时间:2023-10-28 23:09:34 27 4
gpt4 key购买 nike

我有一些时间戳存储为 Postgres 类型 timestamp without time zone

我将以时间戳 2013-12-20 20:45:27 为例。我打算这代表一个 UTC 时间戳。

在 psql 中,如果我运行查询 SELECT start_time FROM table_name WHERE id = 1,我会按预期返回那个时间戳字符串:2013-12-20 20:45:27

但是,如果在我的 Node 应用程序中,我使用 node-postgres 库来运行相同的查询,我会返回本地时区的时间戳:Fri Dec 20 2013 20:45:27 GMT-0600 ( CST)。这是一个 Javascript 日期对象,但它已经存储为该时区。我真正想要的是一个代表 2013-12-20 20:45:27 GMT+0000 的日期对象(甚至只是一个字符串)。我已经知道这次是 UTC。

我尝试将我的 postgresql.conf 文件中的时区参数设置为:timezone = 'UTC',结果没有差异。

我做错了什么?

编辑

问题似乎出在此文件中:https://github.com/brianc/node-postgres/blob/master/lib/types/textParsers.js

如果从 Postgres 返回的日期字符串没有指定时区(即 Z+06:30,那么它只是构造一个 JavaScript 日期对象,我相信它只会包含本地时区。我需要更改我的应用程序以将时区存储在数据库中或覆盖此转换器。

最佳答案

不是要复活一个老问题,而是看看我是如何遇到完全相同的问题的 here ,有一个替代解决方案可以通过覆盖类型解析器来用于 timestamp without time zone:

var pg = require('pg');
var types = pg.types;
types.setTypeParser(1114, function(stringValue) {
return stringValue;
});

这将使 node-pg 无法将值解析为 Date 对象,而是为您提供原始时间戳字符串。

来源:得自node-postgres issues

关于node.js - 使用 node-postgres 获取 UTC 格式的 Postgres "timestamp without timezone",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20712291/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com