如何使用Postges和Knex.js

时间:2019-01-11 04:45:57

标签: node.js postgresql knex.js objection.js

我使用Knex.js和Postgres设置了一个新的日期查询。我需要从表中返回特定月份的所有行。

这是一个简单的应用程序API。香港专业教育学院设法返回我想要的表中的所有字段,但不知道如何查询特定月份的日期字段。我使用Knex.js作为查询生成器,并具有以下内容:

db('table').select() 
.where('Month(date)', '=', 0  ); //this field where I am lost, 

我认为可以完成工作的sql是:EXTRACT(MONTH FROM dateColumn::date) = 1

此刻我出错了。但是我希望查询返回一月份的所有日期字段。我知道我可以使用.whereRaw()字段,但是我不确定100%如何使用它,因为文档没有提供日期字段的任何用例。

作为参考,我要查询的列date的格式为date

2 个答案:

答案 0 :(得分:1)

我设法通过使用knex的.whereRaw() API来使其工作。

.andWhereRaw(`EXTRACT(MONTH FROM dateColumn::date) = ?`, [monthVariable])

我不确定为什么,但是它仅在我的::date的后缀dateColumn下起作用。这会将我的dateColumn转换为postgres dateType。令人困惑的是,dateColumn已经是date类型。

答案 1 :(得分:0)

也许是这样:

db('table').where(db.raw('EXTRACT(MONTH FROM ??::date)', ['dateColumn']), 0)