【问题标题】:sequilize: How to get record with createdat greater than 1 hoursequelize:如何获取 created_at 大于 1 小时的记录
【发布时间】:2019-02-26 10:23:35
【问题描述】:

我是 sequelize 的新手,我不知道如何获取当前日期少于 1 小时的 createdAt 列的记录,这是我的代码:

models.Trip.findAll({
    where: {
      createdAt: {
        $gt:  -------> createdAt <= 1 hour with current date
      }
    },
    include: [
      models.User,
      models.Vehicle,
    ],
  })

如何做到这一点,请帮助我。谢谢!

【问题讨论】:

  • $gt : date("Y-m-d H:i:s", strtotime('+1 hour'))
  • ^ 那是 PHP,问题是关于 Javascript
  • 这是 nodejs 服务器

标签: javascript node.js postgresql sequelize.js


【解决方案1】:

使用sequelize.literal()根据数据库服务器时间查询。

使用服务器:

created_at: {
  [Op.gt]: sequelize.literal("NOW() - INTERVAL '24 HOURS'")),
}

通过从Date.now() 中减去毫秒来使用设置为过去一小时的Date 对象。

使用Sequelize.Op

created_at: {
  [Op.gt]: new Date(Date.now() - (60 * 60 * 1000)),
},

使用旧式operator aliases:

created_at: {
  $gt: new Date(Date.now() - (60 * 60 * 1000)),
},

【讨论】:

  • 对不起,我想要这样的 sql:SELECT DATEDIFF('created_at, 'now) > 1;
  • 但 postgres 中不存在 datediff,您能帮我推荐其他功能吗
  • 您是否特别需要使用数据库中的时间?应用服务器不够用吗?
  • 我想获取 createdAt 与自身相比大于 1 小时的记录,例如 SELECT DATEDIFF('created_at, 'now) &gt; 1;
  • 或者只是减去 2 天(现在和 createdAt),结果将是几个小时
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-06
  • 2023-03-03
  • 1970-01-01
  • 2020-06-06
  • 2023-02-21
  • 1970-01-01
相关资源
最近更新 更多