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

添加日期范围后SQL产品销量求和查询无结果,需实现指定日期统计

解决日期范围查询无结果的SQL问题

你的SQL添加日期条件后无记录,大概率是以下几个原因导致,对应解决方案如下:

1. 日期格式不兼容

多数数据库(如MySQL、PostgreSQL)默认更适配YYYY-MM-DD的日期格式,而非YYYY/MM/DD。如果数据库无法识别斜杠分隔的日期,会直接导致筛选条件失效。

2. 时间边界被截断

如果orr.Order_Date是带时分秒的datetime类型,BETWEEN '2022/12/23' AND '2022/12/24'会自动将后者解析为2022-12-24 00:00:00,当天所有非凌晨时段的订单都会被排除在外。

3. 分组字段与查询字段不一致

你SELECT的是od.Product_ID,但GROUP BY的是p.Product_ID——虽然两张表通过Product_ID关联,但保持字段一致能避免潜在的逻辑歧义。

修改后的SQL示例

针对上述问题,调整后的代码如下:

SELECT od.Product_ID, SUM(od.Quantity) AS sumqty
FROM order_detail od
JOIN product p ON od.Product_ID = p.Product_ID
JOIN order_r orr ON orr.Order_ID = od.Order_ID
WHERE DATE(orr.Order_Date) BETWEEN '2022-12-23' AND '2022-12-24'
GROUP BY od.Product_ID
ORDER BY sumqty DESC;

如果担心DATE()函数影响索引效率,也可以明确指定完整时间范围:

SELECT od.Product_ID, SUM(od.Quantity) AS sumqty
FROM order_detail od
JOIN product p ON od.Product_ID = p.Product_ID
JOIN order_r orr ON orr.Order_ID = od.Order_ID
WHERE orr.Order_Date >= '2022-12-23 00:00:00' 
  AND orr.Order_Date <= '2022-12-24 23:59:59'
GROUP BY od.Product_ID
ORDER BY sumqty DESC;

另外,建议用显式JOIN替代隐式逗号分隔的连接方式,逻辑更清晰,也更容易排查关联问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 11:10:41