默认时区不适用于 postgres 中的续集查询
default timezone is not working for sequelize querys in postgres
我在使用 sequelize 创建连接时设置了时区,但在任何查询中都不起作用。
const sequelize = new Sequelize(
process.env.DB_DATABASE,
process.env.DB_USERNAME,
process.env.DB_PASSWORD,
{
host:process.env.DB_HOST,
dialect: 'postgres',
timezone: '-03:00'
}
);
await sequelize.query(
`UPDATE public.usuarios set data_disponibilidade = now() where id_usuario = $id_usuario`,
{
bind: {
id_usuario: id_operador,
},
type: QueryTypes.UPDATE,
}
);
now()
函数正在使用 00:00 时区,忽略了我之前设置的 -03:00。
更新:
我发现我的问题出在哪里了。列的类型是 timestamp with time zone
。他忽略了我尝试设置的每个时区。甚至 'SET TIME ZONE 'America/Bahia'; '
都没有在这个专门的专栏中工作。我更改了 timestamp without time zone
的类型,现在 timezone
选项也适用于此列。我只需要寻找其他 table 就可以看出这是 table.
中的一个孤立问题
您可以尝试以下操作吗:
UPDATE public.usuarios set data_disponibilidade = now() AT TIME ZONE '+3:00' where id_usuario = $id_usuario
您需要在 dialectOptions
属性 上设置 timezone
用于读取,将其设置在顶级选项上用于写入。
const sequelize = new Sequelize(
process.env.DB_DATABASE,
process.env.DB_USERNAME,
process.env.DB_PASSWORD,
{
host: process.env.DB_HOST,
dialect: 'postgres',
dialectOptions: { // for reading
useUTC: false,
timezone: '-03:00',
},
timezone: '-03:00', // for writing
}
);
我在使用 sequelize 创建连接时设置了时区,但在任何查询中都不起作用。
const sequelize = new Sequelize(
process.env.DB_DATABASE,
process.env.DB_USERNAME,
process.env.DB_PASSWORD,
{
host:process.env.DB_HOST,
dialect: 'postgres',
timezone: '-03:00'
}
);
await sequelize.query(
`UPDATE public.usuarios set data_disponibilidade = now() where id_usuario = $id_usuario`,
{
bind: {
id_usuario: id_operador,
},
type: QueryTypes.UPDATE,
}
);
now()
函数正在使用 00:00 时区,忽略了我之前设置的 -03:00。
更新:
我发现我的问题出在哪里了。列的类型是 timestamp with time zone
。他忽略了我尝试设置的每个时区。甚至 'SET TIME ZONE 'America/Bahia'; '
都没有在这个专门的专栏中工作。我更改了 timestamp without time zone
的类型,现在 timezone
选项也适用于此列。我只需要寻找其他 table 就可以看出这是 table.
您可以尝试以下操作吗:
UPDATE public.usuarios set data_disponibilidade = now() AT TIME ZONE '+3:00' where id_usuario = $id_usuario
您需要在 dialectOptions
属性 上设置 timezone
用于读取,将其设置在顶级选项上用于写入。
const sequelize = new Sequelize(
process.env.DB_DATABASE,
process.env.DB_USERNAME,
process.env.DB_PASSWORD,
{
host: process.env.DB_HOST,
dialect: 'postgres',
dialectOptions: { // for reading
useUTC: false,
timezone: '-03:00',
},
timezone: '-03:00', // for writing
}
);