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

如何使用Sequelize获取今日至7天前的数据?

问题分析与修复方案

核心问题

  1. 字符串无法直接做日期运算
    你通过toISOString().slice(0,10)得到的endDate是字符串格式(比如"2024-05-20"),用字符串减7会得到NaN,完全不是正确的7天前日期。必须基于Date对象完成日期计算后,再转成字符串格式。

  2. between参数顺序颠倒
    多数ORM的between语法要求参数为[起始日期, 结束日期],你写反成了[endDate, startDate],会导致查询范围逻辑错误。

修复后的代码

var datetime = new Date();
let endDate = datetime.toISOString().slice(0,10);  // 今日
// 基于Date对象计算7天前日期,再转成ISO字符串格式
const startDate = new Date(datetime.setDate(datetime.getDate() - 7)).toISOString().slice(0,10);

const places = await Places.findAll({
    where: {createDate: {between : [startDate, endDate]}}   
});

说明

  • 先通过getDate() -7获取7天前的日期数值,用setDate()修改原Date对象,再转成ISO格式字符串,确保startDate是正确的日期字符串。
  • 调整between的参数顺序,保证是「早日期在前,晚日期在后」,符合数据库查询的范围逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 00:20:17