在postgresql中,我需要一个月内的所有偶数天和一个月内的所有奇数天

在postgresql中,我需要一个月内的所有偶数天和一个月内的所有奇数天,postgresql,Postgresql,这是一个错误,如下所示:- 错误:函数mod(双精度,整数)不存在提示:否 函数匹配给定的名称和参数类型。你可能需要 添加显式类型转换。职位:451 之所以会出现此错误,是因为extract的输出是双精度的,mod()函数需要两个数据类型相同的参数 因此,如果您强制转换提取输出,您将不会收到该错误消息: SELECT "user_id", cast("created_date" as date), EXTRACT(DAY FROM

这是一个错误,如下所示:-

错误:函数mod(双精度,整数)不存在提示:否 函数匹配给定的名称和参数类型。你可能需要 添加显式类型转换。职位:451


之所以会出现此错误,是因为
extract
的输出是双精度的,
mod()
函数需要两个数据类型相同的参数

因此,如果您强制转换提取输出,您将不会收到该错误消息:

SELECT
    "user_id",
    cast("created_date" as date),
    EXTRACT(DAY FROM  cast("created_date"as timestamp))
FROM
    "loan"
WHERE
    date_trunc('month', cast("created_date" as date)) = date_trunc('month', cast(now() as date))
    AND MOD(EXTRACT(DAY FROM cast("created_date" as timestamp)),2) = 0
GROUP BY
    cast("created_date" as date),
    "user_id"
但我认为该查询不起作用,以下是我认为您正在尝试的:

AND MOD(EXTRACT(DAY FROM cast("created_date" as timestamp))::int,2) = 0
选择
“用户id”,
铸造(“创建日期”为日期),
计数(*)过滤器(其中MOD(提取(从cast提取的日期(“创建的日期”作为时间戳))::int,2)=0)EvenDaysNo,
count(*)filter(其中MOD(提取(从cast提取的日期(“创建的日期”作为时间戳))::int,2)0)OddDaysNo
从“贷款”
其中cast(“创建日期”为日期))=cast(现在()为日期))
分组
强制转换(“创建日期”为日期)、“用户id”
SELECT
    "user_id",
    cast("created_date" as date),
    count(*) filter (where MOD(EXTRACT(DAY FROM cast("created_date" as timestamp))::int,2) = 0 )) EvenDaysNo , 
    count(*) filter (where MOD(EXTRACT(DAY FROM cast("created_date" as timestamp))::int,2) <> 0 )) OddDaysNo
FROM "loan"
WHERE cast("created_date" as date)) = cast(now() as date))
GROUP BY
    cast("created_date" as date),"user_id"