Postgresql意外截断结果后续

时间:2015-08-12 19:41:59

标签: node.js postgresql sequelize.js pgadmin

我在节点中使用原始的sequelize查询来执行返回查询的postgresql函数。我遇到的问题是,在使用.query()方法时,在pgAdmin中运行查询获得的结果集与节点中返回的结果集不匹配,即使pgAdmin中的查询和节点中的查询是两者完全一样。

这是我正在执行的查询:

SELECT * FROM foo('2015-07-01','2015-07-31');

此查询在pgAdmin中返回91875行,但是,在使用sequelize的节点中,运行以下内容仅返回87500行:

models.sequelize.query("SELECT * FROM foo('2015-07-01','2015-07-31');")
.spread(function (results, metadata) { 
    console.log(results.length);
});
输出:87500

排除的行对应于上次日期2015-07-31。

我发现我可以通过增加第二个日期参数来超越结束日期来获取节点中的所有行。例如,如果我的目标是获得包括2015-07-31的结果,则将结束日期设置为2015-08-03。虽然,这掩盖了问题,并不理想。

我认为我的存储过程函数中的WHERE子句一定有问题。但是,如果是这种情况,为什么我通过pgAdmin运行查询时会返回所需的行数?

1 个答案:

答案 0 :(得分:0)

结果差异的原因与时区有关。我使用UTC进行了续集,但我的数据库使用的是“US / Eastern”。

在我使用命令设置数据库使用UTC后,“SET time zone utc”我能够复制sequelize看到的结果。