Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 书架更改列数据类型_Javascript_Mysql_Bookshelf.js - Fatal编程技术网

Javascript 书架更改列数据类型

Javascript 书架更改列数据类型,javascript,mysql,bookshelf.js,Javascript,Mysql,Bookshelf.js,我正在使用bookshelf.js,我想更改数据类型列,这就是我想做的示例 select * from table where date(datetime_col) = '2017-03-14' datatime_col是DATETIME,我想转换为date来执行查询 这就是我在书架上努力做到的 var Model = new model().query(function (qb) { qb.where('date(datetime_col)', '=' , date);

我正在使用bookshelf.js,我想更改数据类型列,这就是我想做的示例

select * from table where date(datetime_col) = '2017-03-14'
datatime_col是DATETIME,我想转换为date来执行查询

这就是我在书架上努力做到的

var Model =  new model().query(function (qb) {
        qb.where('date(datetime_col)', '=' , date);
    }).fetchAll()
这是我试图执行上述代码时出现的错误

Error: ER_BAD_FIELD_ERROR: Unknown column 'date(datetime_col)' in 'where clause'
这是一个完整的示例,您如何使用knex.raw和bookshelf进行查询谢谢您的回答

使用带有日期时间列的两个日期之间的时间

var Model =  new model().query(function (qb) {
        qb.whereBetween( Bookshelf.knex.raw("DATE(colum_datetime)"), [date_var1, date_var2]);
    }).fetchAll( { withRelated: ['table1', 'table2', {'table3':function (qb) {
        qb.orderBy('date_column', 'desc')
    }},'table4']  });
在哪里使用

var Model =  new model().query("where", Bookshelf.knex.raw("DATE(colum_datetime)"), "=", date_var).fetchAll( { withRelated: ['table1', 'teble2', {'table3':function (qb) {
    qb.orderBy('date_column', 'desc')
}},'table4']  });
看起来“bookshelf.js”或底层的“knex”希望获得模型的属性名(如
datetime\u col
),而不是
date(datetime\u col)
这样的sql片段

根据,您需要传递一个带有函数“raw”sql的部分。 建议的解决方案是这样写:

model.query("where", Bookshelf.knex.raw("DATE(field) = ?"), "2017-03-04"))