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

如何查询PostgreSQL中item_sold表的无销售记录日期?

获取无销售记录的日期(PostgreSQL)

方法1:生成日期序列 + 左连接筛选

先用generate_series生成目标时间范围内的所有日期,再与item_sold表按日期左连接,筛选出未匹配到销售记录的日期:

WITH date_range AS (
    SELECT generate_series(
        '2020-01-01'::DATE,
        '2023-01-01'::DATE,
        '1 day'::INTERVAL
    ) AS all_dates
)
SELECT all_dates AS no_sale_date
FROM date_range
LEFT JOIN item_sold ON date_range.all_dates = item_sold.date
WHERE item_sold.date IS NULL
ORDER BY no_sale_date;

方法2:使用NOT EXISTS子查询

直接生成日期序列,通过子查询判断该日期是否不存在于销售记录中:

SELECT generate_series(
    '2020-01-01'::DATE,
    '2023-01-01'::DATE,
    '1 day'::INTERVAL
) AS no_sale_date
WHERE NOT EXISTS (
    SELECT 1
    FROM item_sold
    WHERE item_sold.date = generate_series
)
ORDER BY no_sale_date;

关键注意点

  • 若item_sold.date是TIMESTAMP类型,需转换为DATE类型(即item_sold.date::DATE),避免时间部分导致匹配失败。
  • 之前WITH子句失败大概率是日期序列生成错误,或未处理日期/时间戳类型不匹配的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 12:10:49