gpt4 book ai didi

javascript - 书架更改列数据类型

转载 作者:行者123 更新时间:2023-11-29 10:57:37 26 4
gpt4 key购买 nike

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

select * from table where date(datetime_col) = '2017-03-14'

datatime_col 是 DATETIME,我想转换为日期来执行查询。

这就是我在书架上尝试做的事情

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_col),而不是像date这样的sql片段(datetime_col)

根据this source ,您需要将函数的一部分作为“原始”sql 传递。建议的解决方案是这样写:

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

关于javascript - 书架更改列数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42795957/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com