在generate_series上进行强制转换会给出:错误:在无法接受集合的上下文中调用的定值函数

时间:2019-01-15 09:56:50

标签: postgresql

在postgres中,当我在日期中加上天数间隔时,便会得到时间戳记。因此,我想将其回溯到某个日期。 我有一个如此时间戳的generate_series,并想将它们转换为日期:

select *
from cast(generate_series(current_date-interval'7 days',current_date,'1 day')as date)gs(date);

当我这样做时,我得到:

ERROR:  set-valued function called in context that cannot accept a set

当我不使用日期,但使用整数时,也没有错误:

select * from cast(generate_series(1,15,2)as int);

以下内容也没有错误:

select cast(generate_series(current_date-interval'7 days',current_date,'1 day')as date)gs(date);

我还有另一个问题:错误消息正在谈论集合。老实说,我只知道表格。

1 个答案:

答案 0 :(得分:1)

generate_series()返回与表相似的行set。显然,您不能将集合转换为单个数据类型。您的演员表类似于select * from cast(some_table as date)

您需要转换该函数返回的值:

select gs.date::date as "date"
from generate_series(current_date - interval '7 days', current_date, '1 day') gs(date)