gpt4 book ai didi

mysql - 为什么在 hh/mm/ss 不同的日期之间 Sequelize 返回空

转载 作者:行者123 更新时间:2023-11-29 07:31:40 24 4
gpt4 key购买 nike

当我在下面使用日期格式 YYYY-MM-DD HH:MM:SS 运行 sequelize 查询时

var query = "select * from alert_detail_full as a\
where a.client_id = '" + clientId + "'\
AND a.timestamp between '" + startDate + "' AND '" + endDate + "';";
db.sequelize.query(query).spread(function (sresult, met) {
console.log(sresult)
var alerts = [];
if (sresult != false) {
sresult.forEach(function (e) {
alerts.push(e);
});
}
response = {
alerts: alerts
};
next(response);
});

我的 sequelize 运行这个查询:

SELECT * FROM alert_detail_full as a    
WHERE a.client_id = 'CL001'
AND a.timestamp BETWEEN '2018-06-08 00:02:00' AND '2018-06-08 00:06:00';

如果我将这个查询直接放在 mysql 中,它会给我一个结果列表。但是在 sequelize sresult 返回 [] ,但是如果我在几天而不是几分钟内创建差异,它将返回如下结果列表。

{
"client_id": "CL001",
"collector_id": "C01",
"sensor_id": "S001",
"value": "4341435.452947",
"timestamp": "2018-06-08T08:01:00.000Z",
"alert_yellow": "60230000.000000",
"alert_red": "456000.000000",
"alert_flag": "low"
},

更新

如果我在时间之间设置很大的间隔,例如 T00:02:00 - T20:02;00,它也会在 sequelize 中生成结果,但如果间隔很小,我只能得到MYSQL 和 sequelize 中的结果总是返回 []

最佳答案

Sequelize 在插入和读取时默认将日期转换为UTC。你可以告诉 sequelize 不要这样做

const sequelize = new Sequelize('db_name', 'postgres', 'postgres', {
host: '127.0.0.1',
dialectOptions: {
useUTC: false //for reading from database
},
dialect: 'postgres',
timezone: '+05:30', // for writng
});

也看看类似的问题here

关于mysql - 为什么在 hh/mm/ss 不同的日期之间 Sequelize 返回空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50959295/

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