【发布时间】:2019-02-14 20:50:18
【问题描述】:
我正在使用带有 NodeJs 的 sequelize ORM。当我将值传递给 where 子句中的 DateTime 列时,它会自动添加本地偏移量。
例如我在写这个。
TripDetail.findOne({
where: {
trip_detail_id: trip_id,
trip_detail_trip_start: '2017-10-05 15:27:38'
},
})
它显示的查询是日志
SELECT *
FROM `tbl_trip_detail` AS `TripDetail`
WHERE `TripDetail`.`trip_detail_id` = 1
AND
`TripDetail`.`trip_detail_trip_start` = '2017-10-05 22:27:38'
我对sequelize的配置是
{
user: 'root',
password: '',
database: 'abc',
dialect: 'mysql',
options: {
dialect: 'mysql',
host: 'localhost',
port: 3306,
logging: console.log, // or specify sails log level to use ('info', 'warn', 'verbose', etc)
dialectOptions: {
timezone: 'utc', //for reading from database
dateStrings: true,
typeCast: function (field, next) { // for reading from database
if (field.type === 'DATETIME') {
return field.string()
}
return next()
}
},
},
}
我也尝试过完全删除 dialectOptions 对象。
【问题讨论】:
-
为什么将日期视为字符串?您的
dialectOptions要求sequelize将日期转换为 UTC 并将其作为字符串传递。为什么不在模型中使用Sequelize.DATE? -
@PanagiotisKanavos 我正在使用 Sequelize.Model,dialectOptions 也没有将其转换为 UTC,它返回带有偏移量的日期。
标签: mysql node.js sequelize.js mysql2