使用knex进行查询时date类型数据格式错误

2020-03-20  本文已影响0人  Reflection_Boom

发现问题起因:

数据库使用的pg,在使用date类型时,在ide查看字段内容为【2020-02-02】,只会保留年月日,但是使用knex进行查询时,会被knex转换一次,变为【2020-02-01T16:00:00.000Z】(此处为我设置的数据库为z时区,等于北京时间2020-02-02 00:00:00)
我设置为date而不是timestamp的原因不就是我只想将数据存储到day这个时间节点嘛
之后我使用php7+laravel7,复写了这一块查询,发现日期格式正确,就确定了是knex部分是做了转换

原因:

knex中的pg包把postegerSql的date转换成了JavaScript的date格式

解决方案:

knex内部引入了node-pg-types三方包,设置pg的自动转换即可

const { types} = require('pg');

const TYPE_DATESTAMP= 1082;  //  date转换的OID为1082

types.setTypeParser(TYPE_DATESTAMP, date=> date);
上一篇 下一篇

猜你喜欢

热点阅读