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
相关产品推荐
相关产品推荐

