Sequelize How compare year of a date in query

16,086

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)
Share:
16,086
Alvaro Silvino
Author by

Alvaro Silvino

I'm a fullstack developer, passionate about my profession and wishing to contribute to a better world through technology. Undergraduate in CS by Federal University of Pernambuco and Memorial University of Newfoundland. Degree in deep learnig from Coursera. Currently working for Booking.com, as Software Engineer and aspiring to Machine Learning Data Scientist. contact: [email protected]

Updated on June 14, 2022

Comments

  • Alvaro Silvino
    Alvaro Silvino almost 2 years

    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:{}//????
         }
    

    Thanks!