为了正确使用带有时区的查询,请准备好您的pg驱动程序,详见此处:
const pg = require('pg')
const { types } = pg
pg.defaults.parseInputDatesAsUTC = true
types.setTypeParser(types.builtins.DATE, str => str)
types.setTypeParser(types.builtins.TIMESTAMP, str => str)
types.setTypeParser(types.builtins.TIMESTAMPTZ, str => str)
在初始化Sequelize实例之前,必须进行初始化。
现在,您可以运行一个查询,指定您想要获取日期的时区。
假设我们进行一个SQL查询,选择所有用户字段和“createdAt”在时区'Europe/Kiev'中:
SELECT *, "createdAt"::timestamptz AT TIME ZONE 'Europe/Kiev' AS "createdAt" FROM users WHERE id = 1;
# or with variables
SELECT *, "createdAt"::timestamptz AT TIME ZONE :timezone AS "createdAt" FROM users WHERE id = :id;
对于Sequelize(针对用户模型),代码将如下所示:
```javascript
```
请注意,此处未提供具体的代码实现。
sequelize.findOne({
where: { id: 1 },
attributes: {
include: [
[sequelize.literal(`"User"."createdAt"::timestamptz AT TIME ZONE 'Europe/Kiev'`), 'createdAt'],
]
}
});
timestamp AT TIME ZONE
的原始查询来解决这个问题。 - Vao Tsun