node.js - Knex 从时间列和日期列中获取格式化时间

标签 node.js knex.js

我有一个使用时间类型定义的列和一个使用日期类型定义的列。

knex.schema.createTable('receipt', function(table) {
...
    table.date('t_date');
    table.time('t_time');
...
});

它以24小时格式将数据存储在数据库中。例如:22:00:00。日期为“2018-11-30”。但是当我运行选择查询时它会返回。

{
...
    "transactionDate": "2018-11-29T00:00:00.000Z",
    "transactionTime": "1970-01-01T22:20:00.000Z",
...
}

如何从日期格式为 YYYY-MM-dd 和时间为 HH:mm:ssAM/PM 的选择查询中获取日期?

最佳答案

下一个片段对我来说就像一个魅力:

const { setTypeParser, builtins } = require('pg').types;

const typesToReset = [
  builtins.DATE,
  builtins.TIME,
  builtins.TIMETZ,
  builtins.TIMESTAMP,
  builtins.TIMESTAMPTZ,
];

function resetPgDateParsers() {
  for (const pgType of typesToReset) {
    setTypeParser(pgType, val => String(val)); // like noParse() function underhood pg lib
  }
}

...并在使用您的 pg 或库/orm 之前调用此函数取决于 pg (knex、反对等)请求。

来源:https://github.com/Vincit/objection.js/issues/663#issuecomment-351678734console.log(pg.types)

关于node.js - Knex 从时间列和日期列中获取格式化时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53562925/

相关文章:

javascript - Node.js Firestore 身份验证问题(当 javascript 工作时)

javascript - 验证 typescript ,但不要构建它

postgresql - sql语句确保postgres中的原子性

javascript - 上传文件时超出重试限制

node.js - TDD 测试第一个 Node Js Express Rest Api - 单元测试中间件/ Controller /路由

node.js - nodejs 流与回调

postgresql - 如何在数据库中设置另一个用户名?

knex.js - 无法读取未定义的属性 'transaction'

javascript - API 在未发送/api/users/create 响应的情况下解析,这可能会导致请求停止。下一个

knex.js - Knex 中的子查询