Sequelize如何比较查询中日期的年份



我正在尝试进行以下查询:

SELECT * FROM TABLEA AS A WHERE YEAR(A.dateField)='2016'

如何以sequelize样式执行上面的查询?

TABLEA.findAll({
      where:{}//????
     }

谢谢!

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

这里必须使用.where,因为表达式的左手边(键(是一个对象,所以它不能在常规POJO样式中用作对象键。

如果你想将其与其他条件相结合,你可以这样做:

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

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

您必须将date_part函数添加到查询中:

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

这里必须使用.hwhere,因为表达式的左手边(键(是一个对象,所以它不能在常规POJO样式中用作对象键。

如果你想将其与其他条件相结合,你可以这样做:

var Sequelize require('sequelize')
var Op = Sequelize.Op

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

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

相关内容

  • 没有找到相关文章

最新更新