You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Sequelize按deliveryDate获取当日所有记录

用Sequelize查询指定日期当天的所有记录

你当前的代码用findOne做精确时间匹配,只能拿到时间完全一致的单条记录,要实现忽略时间戳查询当天所有记录,需按以下方式修改:

  1. 首先导入Sequelize的操作符(如果还没导入):
const { Op } = require('sequelize'); // CommonJS 语法
// 或 ES 模块语法:import { Op } from 'sequelize';
  1. 处理传入的deliveryDate参数,生成当天的起始时间和次日起始时间,以此作为查询区间:
// 将传入的日期字符串转为Date对象
const targetDate = new Date(deliveryDate);
// 当天00:00:00
const startOfDay = new Date(targetDate.getFullYear(), targetDate.getMonth(), targetDate.getDate());
// 次日00:00:00
const startOfNextDay = new Date(startOfDay);
startOfNextDay.setDate(startOfNextDay.getDate() + 1);

// 执行查询,用findAll获取多条记录
const result = await Order.findAll({
  where: {
    leaderId: leaderId,
    deliveryDate: {
      [Op.gte]: startOfDay, // 大于等于当天起始
      [Op.lt]: startOfNextDay // 小于次日起始
    }
  }
});

关键说明:

  • 用findAll替代findOne,因为需要返回多条当天的记录
  • 通过Op.gte和Op.lt构建时间区间,确保覆盖当天从00:00:00到23:59:59的所有记录,不管传入参数的具体时间是什么
  • 这种方式兼容不同数据库的时间类型处理,避免因数据库时区问题导致的匹配误差

内容的提问来源于stack exchange,提问作者rai8

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 14:40:44