我有一个简单的node.js服务器,它接受对数据库的请求和查询。当我尝试使用以下函数查询所有余额时
const Pool = require('pg').Pool;
const pool = new Pool({
user: 'myUsername',
host: 'localhost',
database: 'myDatabase',
password: 'myPassword',
port: 5432,
});
const getBalances = (request, response) => {
pool.query('SELECT * FROM balances', (error, results) => {
if (error) {
throw error
}
response.status(200).json(results.rows)
})
};
我得到以下结果(忽略余额、相关零件日期)
[{"balance":400,"last_received":"2020-06-20T22:00:00.000Z"},
{"balance":200,"last_received":"2020-06-20T22:00:00.000Z"},
{"balance":200,"last_received":"2020-06-20T22:00:00.000Z"},
{"balance":400,"last_received":"2020-06-20T22:00:00.000Z"}]
这很奇怪,因为最后收到的通知应该是今天的日期。当我使用postgresql cli检查时,我使用与node.js代码中相同的查询得到以下结果:
balance | last_received
--------+--------------
400 | 2020-06-21
200 | 2020-06-21
200 | 2020-06-21
400 | 2020-06-21
日期不一样,它也不会像我使用node.js查询时那样返回时间。我用于创建表的日期数据类型是postgresql中的标准日期数据类型。为什么会这样?我该如何解决?
我尝试过的:我尝试过多次重新查询和重新启动这两个程序,以确保它不是某种计时错误,但每次都是相同的结果和我所查询的结果 show timezone
在两端得到相同的结果。
另外,查询时 select now()
我在两个视图上都得到了正确且相同的日期,但是当我查询时 select CURRENT_DATE
它们按天不同,表明问题出在当前日期关键字的某个地方。
1条答案
按热度按时间bxgwgixi1#
节点postgres转换
Date
类型到Datetime
在本地时区,因此它将转换为您的服务器/节点时区。因此,要么在获取日期之后调整日期,要么调整服务器/节点时区,要么重写类型解析器。