我尝试使用sequelize在日期字段中搜索数据库中的记录:
date_from2是这个值:
2017-01-09
和sequelize将其解释为小时= 2的日期:
SELECT `id`, `user_id`, `date`, `total_visits`, `created_at`, `updated_at` FROM `table1` AS `table1` WHERE `table1`.`user_id` = 123 AND `table1`.`date` = '2017-01-09 02:00:00' LIMIT 1;
它每次创建一条新记录,而不是更新它。 插入时,将使用以下值插入日期:
2017-01-09 00:00:00
这是我的代码:
where = { user_id: user_id,
date: date_from2
};
values = {
user_id: user_id,
date: date_from2,
total_visits: total_visits
};
Model.findOne({where: where}).then(function (record) {
if (!record) {
// Item not found, create a new one
Model.create(values)
.then(function () {
console.log('created!');
}).error(function (err) {
console.log('error on create');
});
} else {
// Found an item, update it
Model.update(values, {where: where})
.then(function () {
console.log('updated!');
})
.catch(function (err) {
console.log('error on update');
});
}
});
答案 0 :(得分:0)
如果您尝试获取特定用户,只需使用用户的user_id
而不是date
进行查询:
Model.findOne({where: {user_id: user_id}})
问题在于,它以与您传入的内容不同的方式存储date
。因此,您永远无法找到现有用户并且您不断创建新用户。使用UTC
时区没有任何问题,您应该能够将其转换为任何其他时区。