繁体   English   中英

DATE_PART和Postgresql

[英]DATE_PART and Postgresql

我在此查询的函数DATE_PART中减去两个日期时遇到问题。

SELECT
    TO_CHAR(date_trunc('month',sql_activity_days.created_month),'YYYY-MM') AS "sql_activity_days.created_month",
    coalesce(SUM(
        CASE
            WHEN(date_part('day', (sql_activity_days.sale_date + 1) - sql_activity_days.start_date) < 122) 
             THEN sql_activity_days.cad_net_invoiced
            ELSE NULL
        END
    ),0) AS "sql_activity_days.activity_over_122_day_after_signup"
FROM
    camel.f_subscription_touch  AS subscription_touch
    LEFT JOIN sql_activity_days ON subscription_touch.id  = sql_activity_days.customer_id 
    group by date_trunc('month',sql_activity_days.created_month) 
    order by 1 desc limit
500

PostgreSQL数据库在运行此查询时遇到错误。

错误:函数date_part(未知,整数)不存在提示:没有函数与给定的名称和参数类型匹配。 您可能需要添加显式类型转换。 位置:1340

函数date_part的第二个参数可以是timestampinterval

您的表达式(sql_activity_days.sale_date + 1) - sql_activity_days.start_date减去两个dates ,其结果数据类型为整数,因此会出现错误。

解决方案是删除date_part并直接使用表达式。 两个日期之差始终以天为单位给出值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM