首页 > 解决方案 > 在 node-postgres 模块上显示带有时区的日期类型

问题描述

我已将输入数据以日期格式存储在 postgres 数据库中,但是当我在浏览器中显示日期时,它会显示带有时区的日期并将其从 utc 转换。例如,我以2020-07-16格式存储了日期。但是当我显示它变成的日期时2020-07-15T18:00:00.000Z。我曾尝试使用select mydate::DATE from table仅获取日期,但它仍然显示带有时区的日期。我在我的节点应用程序中使用 node-postgres 模块。我怀疑这是 node-postgres 模块上的一些配置?从他们的文档

node-postgres 将 DATE 和 TIMESTAMP 列转换为在 process.env.TZ 处设置的节点进程的本地时间

他们有什么方法可以将其配置为仅解析日期吗?如果我这样查询,SELECT TO_CHAR(mydate :: DATE, 'yyyy-mm-dd') from table我会得到2020-07-16,但这只是为了获得日期而做的很多工作

标签: node.jspostgresqlnode-postgres

解决方案


可以自己制作日期时间类型解析器:</p>

const pg = require('pg');
pg.types.setTypeParser(1114, function(stringValue) {
  return stringValue;  //1114 for time without timezone type
});

pg.types.setTypeParser(1082, function(stringValue) {
  return stringValue;  //1082 for date type
});

类型 id 可以在文件中找到:node_modules/pg-types/lib/textParsers.js


推荐阅读