首页 > 解决方案 > 使用 Sequalize 运算符获取日期

问题描述

我需要从数据库获取事件日期在今天之后 3 天的记录。日期格式为2019-07-06 12:00:00例如,如果今天是 7 月 4 日 - Sequalize 应返回字段event等于 7 月 7 日任何时间的所有记录。

我假设使用 Sequalize 运算符。Moment lib 在范围内可用,因此可能会有所帮助。

const records = await this.bookingService.findAll({
      where: {
        event: { [this.sequelize.Op.eq]: moment().add(3, 'days').toDate() }
      }
    });

一般来说,我喜欢这个想法,但它没有显示任何记录,因为它们有不同的时间。也许我需要从 DB 格式化事件字段,但不知道如何访问event该行中的字段event: { [this.sequelize.Op.eq]: moment().add(3, 'days').toDate() }

标签: javascriptnode.jssequelize.js

解决方案


好吧,我找到了解决方案。实际上我不需要格式化事件日期,而是需要在 3 天内在一天的开始和结束时创建两个时间戳。像这样:

const startDate = moment().add(3, 'days').startOf('day').format() const endDate = moment().add(3, 'days').endOf('day').format()

不仅仅是检查记录事件字段是否在此日期范围内:

const records = await this.bookingService.findAll({
      where: {
        event: { [this.sequelize.Op.between]: [startDate, endDate]}
      }
    });

推荐阅读