You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js查询PostgreSQL数据库时date字段始终返回null

PostgreSQL date类型字段查询返回null问题

我在PostgreSQL中创建了LOR表,建表SQL如下:

create table LOR
(
    PLR_ID         int primary key,
    visibility     int,
    planning_space text,
    tessellate     int,
    extrude        int,
    size_m2        real,
    stand          date,
    area_key       int references Bezirkgrenzen (area_key)
);

使用Node.js的pg库查询数据时,所有字段都能正常获取,但date类型的stand字段始终返回null。

查询用的JavaScript代码:

var pg = require('pg');

var connectionString = {
    user: 'postgres',
    host: 'localhost',
    database: 'test',
    password: '123',
    port: 5432,
};

var pool = new pg.Pool(connectionString);

pool.connect(function (err, client, done) {

    const query = client.query(new pg.Query("select * from lor"))
    query.on('row', (row) => {
        console.log(row);
    })
    query.on('end', (res) => {
        // pool shutdown
        console.log("ending");
        pool.end()
    })
    query.on('error', (res) => {
        console.log(res);
    })

    done()
})

查询结果示例:

{
  plr_id: 11300616,
  visibility: -1,
  planning_space: 'Hohenschönhausener Straße',
  tessellate: -1,
  extrude: 0,
  size_m2: 416963.7,
  stand: null,
  area_key: 11
}
ending

数据库中对应条目的stand字段存在有效日期值,但查询结果始终为null。


解决办法

1. 排查字段大小写问题

PostgreSQL会自动将未加双引号的标识符转为小写,但如果插入数据时实际使用的是大写列名(比如STAND),select *会映射到小写stand字段,导致返回null。可以尝试显式指定带引号的字段查询:

select "PLR_ID", "visibility", "planning_space", "tessellate", "extrude", "size_m2", "stand", "area_key" from lor

2. 升级pg库版本

旧版pg库存在date类型解析的已知bug,执行npm update pg升级到最新稳定版后重试查询。

3. 显式转换日期为字符串验证

在查询语句中将date字段转为字符串,确认数据库中是否真的有值:

select *, to_char("stand", 'YYYY-MM-DD') as stand_str from lor

如果stand_str能返回有效日期,说明是客户端解析问题,升级库即可解决;如果依然无值,直接在psql中执行select stand from lor where plr_id = 11300616,验证数据库中该字段的实际值。

4. 对齐数据库与客户端时区

时区不匹配可能导致日期解析异常,在连接配置中添加与数据库一致的时区:

var connectionString = {
    user: 'postgres',
    host: 'localhost',
    database: 'test',
    password: '123',
    port: 5432,
    timezone: 'UTC' // 替换为你的数据库时区,比如'Asia/Shanghai'
};

内容的提问来源于stack exchange,提问作者Ledrake

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 07:13:27