fst*_*stn 0 postgresql timezone node.js knex.js
我有一个像这样的 postgreSQL 表:
table.string('id');
table.string('name');
table.specificType('data', 'JSONB');
table.timestamp('runDate');
table.boolean('done').default(false);
Run Code Online (Sandbox Code Playgroud)
我想知道在数据库中插入日期时间的安全方法是什么。
这就是我所做的:
await _i_.knex("jobs")
.transacting(ctx ? ctx.transaction : null)
.insert({
id: job.id,
name: job.name,
data: job.data,
id: job.id,
runDate: job.runDate,
done: false
});
Run Code Online (Sandbox Code Playgroud)
当我想查询我的表时,我使用:
return await _i_.knex('jobs')
.transacting(ctx ? ctx.transaction : null)
.whereRaw('"runDate" < NOW()')
.andWhere('done', false)
.returning("*")
.update({
done: true
});
Run Code Online (Sandbox Code Playgroud)
因此,如果我的 nodeJS 服务器没有比我的 PostgreSQL 保存的时区,我可能会遇到时区问题。
你是怎么做到的?
默认情况下,为 PostgreSQL 的列knex
创建 timestamp with time zone
( timestamptz
) 类型.timestamp()
。因此,您的日期和时间与时区一起存储。对于插入时间戳值,我喜欢使用moment
package。
const moment = require('moment');
const dateStr = moment().utc().format();
console.log(dateStr); // => Date in format 'YYYY-MM-DDTHH:mm:ssZ'
knex.insert({ runDate: dateStr })
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3983 次 |
最近记录: |