Mysql 为什么要在hh/mm/ss返回为空的日期之间续写
当我以日期格式运行下面的sequelize查询时Mysql 为什么要在hh/mm/ss返回为空的日期之间续写,mysql,node.js,sequelize.js,Mysql,Node.js,Sequelize.js,当我以日期格式运行下面的sequelize查询时YYYY-MM-DD HH:MM:SS 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(f
YYYY-MM-DD HH:MM:SS
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);
});
my 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中,它会给我一个结果列表。
但是在sequelizesresult
中,返回[]
,但是如果我在几天而不是几分钟内创建差异,它将返回如下所示的结果列表
{
"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
});
再看看类似的问题