美文网首页
使用knex进行查询时date类型数据格式错误

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

作者: Reflection_Boom | 来源:发表于2020-03-20 09:49 被阅读0次

    发现问题起因:

    数据库使用的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);
    

    相关文章

      网友评论

          本文标题:使用knex进行查询时date类型数据格式错误

          本文链接:https://www.haomeiwen.com/subject/rtvdyhtx.html