Sequelize 将传递的日期对象转换为本地日期

Sequelize converts passed date object to local date

当我执行一个将数据作为替换传递的查询时,查询中的日期未设置为 UTC 日期。

我的代码:

let startInterval = moment('2020-12-09').toDate();

db.query(`
    SELECT kv.kpiId
    FROM kpiValues kv
    WHERE kv.insertDate >= :startInterval
`, {
    type: QueryTypes.SELECT,
    replacements: {
        startInterval: startInterval,
    }
}).catch(next)

打印 startInterval 变量导致 2020-12-08T23:00:00.000Z。 当我输出查询时,它显示

SELECT kv.kpiId
FROM kpiValues kv
WHERE kv.insertDate >= '2020-12-09 00:00:00.000'

该列是续集日期列(SQL 日期时间)。查询中的值是我的本地时间 - 但数据库应该只使用 UTC 值 - 所以我希望它在查询中使用 2020-12-08T23:00:00.000 。我能做什么?

续集连接:

const sequelize = new Sequelize(dbName, dbUser, dbPassword, {
    host: Settings.dbUrl,
    port: dbPort,
    dialect: 'mariadb',
    dialectOptions: {},
    timezone: '+00:00',
    pool: {
        max: 70,
        min: 5,
        acquire: 30000
    },
    define: {
        timestamps: false,
        freezeTableName: true
    },
    logging: true // Remove property when all statements that are executed should be printed
});

由于使用 sequelize 作为 DBMS 的 mariaDB 没有解决此问题的方法,因此以下解决方法有效: 只需手动将替换变量作为 UTC 字符串传递:

dateVariable.toISOString()