Skip to content Skip to sidebar Skip to footer

Sequelize How Compare Year Of A Date In Query

I'm trying to make this query: SELECT * FROM TABLEA AS A WHERE YEAR(A.dateField)='2016' How can I perfome this query above in sequelize style? TABLEA.findAll({ where:{}//???

Solution 1:

TABLEA.findAll({
  where: sequelize.where(sequelize.fn('YEAR', sequelize.col('dateField')), 2016)
 });

You have to use .where here, because the lefthand side of the expression (the key) is an object, so it cannot be used in the regular POJO style as an object key.

If you want to combine it with other conditions you could do:

TABLEA.findAll({
  where: {
    $and: [
      sequelize.where(sequelize.fn('YEAR', sequelize.col('dateField')), 2016),
      { foo: 'bar' }
    ]
  }
 });

https://sequelize.org/v3/docs/querying/#operators

Solution 2:

you have to add the date_part function to your query:

sequelize.where(sequelize.fn("date_part",'year',sequelize.col('dateField')), 2020)

Solution 3:

TABLE.findAll({
  where: sequelize.where(sequelize.fn('YEAR', sequelize.col('dateField')), 2016)
 });

You have to use .where here, because the lefthand side of the expression (the key) is an object, so it cannot be used in the regular POJO style as an object key.

If you want to combine it with other conditions you could do:

var Sequelize require('sequelize')
var Op = Sequelize.Op
let andOp = Op.and

TABLE.findAll({
  where: {
     foo: 'bar',
     andOp:sequelize.where(sequelize.fn('YEAR', sequelize.col('dateField')), 2016)   
  }
 });

https://sequelize.org/v5/manual/querying.html#operators

Post a Comment for "Sequelize How Compare Year Of A Date In Query"