如何使用Sequelize查询创建时间早于一年前的记录
如何使用Sequelize查询创建时间早于一年前的记录
示例数据
userId createdDate 1. 2023-07-19 00:49:59 2. 2022-08-20 00:49:59
原有代码问题
你写的代码存在两处错误:
- 运算符误用:使用
[Op.gte](大于等于),但需求是筛选早于一年前的记录,应该用[Op.lte](小于等于)。 - 日期计算错误:
new Date(new Date().getFullYear(), 1)得到的是当前年份的2月1日(JavaScript月份从0开始计数),并非一年前的日期。
正确实现代码
方法一:直接计算时间戳(简单但忽略闰年)
return this.findAll({ where: { createdDate: { [Op.lte]: new Date(Date.now() - 365 * 24 * 60 * 60 * 1000) } } });
方法二:精准计算年份(考虑闰年)
const oneYearAgo = new Date(); oneYearAgo.setFullYear(oneYearAgo.getFullYear() - 1); return this.findAll({ where: { createdDate: { [Op.lte]: oneYearAgo } } });
执行结果
使用上述代码后,会正确返回你期望的记录:
2. 2022-08-20 00:49:59
内容的提问来源于stack exchange,提问作者learntocode2468
相关产品推荐
相关产品推荐

