gpt4 book ai didi

javascript - Sequelize 日期比较插入了错误的时间

转载 作者:行者123 更新时间:2023-12-03 22:19:27 25 4
gpt4 key购买 nike

Sequelize 自动插入错误的时间戳。

在我的代码中的某处,我在下面做:

fromdate = moment(fromdate).format('YYYY-MM-DD'); 
todate = moment(todate).add(1, 'days').format('YYYY-MM-DD');
whereclause['order_date'] = { [Op.between]: [fromdate, todate] };

生成的 SQL 查询是这样的:
`MyTable`.`mydatetimecolumn` BETWEEN '2020-06-18 04:00:00' AND '2020-06-19 04:00:00';

这个 04:00:00 是从哪里来的?

列在其实体中的定义如下:
mydatetimecolumn: {
type: DataTypes.DATE
}

我在 mysql 中使用 sequelize 5.21.2。我对可能会出错的地方感到困惑。
虽然看起来,sequelize 是自动插入时区时间,但为什么,如何将其关闭或提供其他内容?

即使我执行 .format('YYYY-MM-DD 00:00:00') ,它仍然会将其覆盖为 4:00:00

最佳答案

“这个 04:00:00 来自哪里?”,它来自您的时区。您的服务器必须设置为 GMT-4。 mysql 使用 GMT,但您的脚本/操作系统使用 GMT-4。它是“正确的”(允许对“正确”有不同的解释)。

尝试在连接中设置时区。

const sequelize = new Sequelize(mysql.database, mysql.user, mysql.password, {
host: mysql.host,
port:3306,
dialect:'mysql',
define: {
underscored: true,
freezeTableName: true, //use singular table name
timestamps: false, // I do not want timestamp fields by default
},
dialectOptions: {
useUTC: false, //for reading from database
dateStrings: true,
typeCast: function (field, next) { // for reading from database
if (field.type === 'DATETIME') {
return field.string()
}
return next()
},
},
timezone: '-04:00'
});

关于javascript - Sequelize 日期比较插入了错误的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62451752/

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