Узел Js упорядочивает выбор запроса по месяцам

#node.js #select #orm #sequelize.js

#node.js #выберите #orm #sequelize.js

Вопрос:

Я новичок Node Js , в моем Node Js проекте я использую sequelize ORM с MySql базой данных.

Это мой запрос, я хочу написать запрос выбора по месяцам.

Это мой запрос SELECT * FROM cubbersclosure WHERE MONTH(fromDate) = '04'

Здесь fromDate тип поля date

введите описание изображения здесь

Это мой код:

 var fromDate = '2019-04-01'
var fromDateMonth = new Date(fromDate);
var fromMonth = (fromDateMonth.getMonth()  1) < 10 ? '0'   (fromDateMonth.getMonth() 1) : (fromDateMonth.getMonth() 1);

CubbersClosure.findAll({
    where:{
        // select query with Month (04)... //fromMonth
    }
}).then(closureData=>{        
    res.send(closureData);
}).catch(error=>{
    res.status(403).send({status: 'error', resCode:200, msg:'Internal Server Error...!', data:error});
});
 

Здесь fromMonth указан только месяц с даты, поэтому я хочу написать код выбора запроса по месяцам.

Ответ №1:

Я не уверен, но как насчет попробовать это?

 where: {
  sequelize.where(sequelize.fn("month", sequelize.col("fromDate")), fromMonth)
}
 

Комментарии:

1. Я получил ошибку, похожую на D:my_projectchoose_cubbyinternal-testappcontrollercubbercubbers.controller.js:907 sequelize.where()

2. Итак, измените код следующим where: { $and: sequelize.where(sequelize.fn("monthc", sequelize.col("fromDate")), fromMonth) } образом, но снова он показывает ошибку

3. как насчет замены monthc на month? произошла опечатка

4. Это ошибка FUNCTION choose_cubby.monthc does not exist

Ответ №2:

для тех из вас, кто ищет postgres, это несколько хакерский способ заставить это работать (обязательно протестируйте это):

 const results = await models.users.findAll({
   where: this.app.sequelize.fn('EXTRACT(MONTH from "createdAt") =', 3)
});
 

вы также можете сделать еще один шаг и запросить несколько атрибутов следующим образом:

 const results = await models.table.findAll({
   where: {
     [Op.and] : [
        this.app.sequelize.fn('EXTRACT(MONTH from "createdAt") =', 3),
        this.app.sequelize.fn('EXTRACT(day from "createdAt") =', 3),
     ]
   }
});