我使用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
答案 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)