Как запросить поле даты для определенного месяца с помощью Postges и Knex.js - PullRequest
0 голосов
/ 11 января 2019

Я настраиваю новый запрос даты, используя 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 голосов
/ 14 января 2019

Мне удалось заставить это работать, используя .whereRaw() API knex.

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

Я не совсем уверен, почему, но он работал только с суффиксом ::date к моему dateColumn. Это приведёт мой dateColumn к postgres dateType. Смущает то, что dateColumn уже был типа date.

0 голосов
/ 11 января 2019

Может быть, это:

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