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

如何查询5-6个月前的账户记录?SQL语句报错求解

问题解决:查询5-6个月前开户的账户记录

报错原因

你写的SQL里,start date(字段名带空格的话需要用双引号包裹,建议规范命名为start_date)是日期类型,而INTERVAL '5 month'是时间间隔类型,直接用BETWEEN让这两种不同类型的数据做比较,数据库找不到对应的运算规则,所以抛出operator does not exist: date = interval错误。

正确SQL写法

需要把时间间隔和当前日期计算,得到具体的日期范围,再和开户日期字段比较。同时注意BETWEEN的顺序:必须把更早的日期(6个月前)放在前面,较近的日期(5个月前)放在后面,否则会查不到数据。

如果字段名是start_date:

SELECT *
FROM Account
WHERE start_date BETWEEN CURRENT_DATE - INTERVAL '6 month' AND CURRENT_DATE - INTERVAL '5 month';

如果字段名确实是带空格的start date(不推荐这种命名方式):

SELECT *
FROM Account
WHERE "start date" BETWEEN CURRENT_DATE - INTERVAL '6 month' AND CURRENT_DATE - INTERVAL '5 month';

补充说明

  • CURRENT_DATE会获取当前系统日期,减去对应的时间间隔后得到的是具体的日期值,和start_date类型匹配,就能正常比较。
  • 如果你的数据库是MySQL,语法类似,获取当前日期可以用CURDATE(),写法如下:
SELECT *
FROM Account
WHERE start_date BETWEEN DATE_SUB(CURDATE(), INTERVAL 6 MONTH) AND DATE_SUB(CURDATE(), INTERVAL 5 MONTH);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 00:16:06