在PostgreSQL中,默认时区对Sequelize查询无效的问题可以通过在Sequelize配置中设置时区来解决。以下是解决方法的代码示例:
const Sequelize = require('sequelize');
const sequelize = new Sequelize('database', 'username', 'password', {
host: 'localhost',
dialect: 'postgres',
dialectOptions: {
// 设置时区为 'Asia/Shanghai'
useUTC: false, // for reading from database
dateStrings: true,
typeCast: true
},
timezone: '+08:00' // 设置时区为 '+08:00' (Asia/Shanghai)
});
// 测试查询
sequelize.query('SELECT NOW()').then(([results, metadata]) => {
console.log(results[0]); // 输出当前时间,已经根据时区进行了转换
}).catch(err => {
console.error('查询错误:', err);
});
在上面的代码示例中,我们使用dialectOptions
选项来设置时区为'Asia/Shanghai',并使用timezone
选项将时区设置为'+08:00'。这将确保在Sequelize查询中使用正确的时区。
请根据您的实际情况修改数据库连接的参数,以适应您的PostgreSQL服务器配置。