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

PostgreSQL计算当前日期与指定日期列天数差报错求助

PostgreSQL日期差计算及查询语法修正

问题1:DATEDIFF函数不兼容

PostgreSQL没有SQL Server里的DATEDIFF函数,也不支持D这种日期单位参数。要计算两个日期的天数差,直接用日期相减即可,结果就是天数;或者用DATE_PART('day', CURRENT_DATE - Minimum_date)明确提取天数部分。

问题2:查询语法错误导致字段找不到

原查询存在括号不匹配、子查询缺少FROM关键字的问题,导致数据库无法正确识别Minimum_date字段:

  • 子查询B的SELECT语句后缺少FROM,无法关联子查询A
  • 最后多了一个多余的右括号,破坏了查询结构

修正后的完整查询

SELECT *, CURRENT_DATE - "Minimum_date" AS active_date
FROM (
    SELECT posting_id, media_cycle_id, MIN(external_date_created) AS "Minimum_date"
    FROM (
        SELECT cmc.site_id, cmc.media_cycle_id, cp.posting_id, cp_job_id, cp.external_date_created
        FROM landing.advertising_context_media_cycle AS cmc
        INNER JOIN landing.advertising_context_posting AS cp
            ON cmc.cycle_id = cp.cycle_id
    ) AS A
    GROUP BY posting_id, media_cycle_id
) AS B

补充说明

  • 如果需要更灵活的日期单位计算,可以用AGE()函数,比如AGE(CURRENT_DATE, "Minimum_date")会返回类似1 year 2 mons 3 days的间隔,再用DATE_PART提取对应部分
  • 别名用双引号时,查询中引用要保持大小写一致(PostgreSQL默认会把无引号的标识符转为小写)

内容的提问来源于stack exchange,提问作者Joseph Badana Rivera

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 03:33:11