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

如何在PostgreSQL中将查询日期存入date数组并解决22P02错误

报错原因

你的写法是直接将单条查询返回的date类型值赋值给date[]类型的数组变量,PostgreSQL会尝试把单个日期字符串解析为数组字面量,因此触发格式错误。

数组赋值修正

需要用array_agg()聚合函数将匹配的所有日期聚合为数组后再赋值,同时可以用coalesce处理无匹配数据时返回空数组,避免后续判断出现空值异常:

declare 
  dateval date[];
  target_date date := '2021-05-01'; -- 替换为你要判断的目标日期变量
begin 
  select coalesce(array_agg(days), '{}'::date[]) 
  into dateval 
  from holidays 
  where days between '2021-01-01' and '2021-12-31' 
    and city='NY';

分支判断逻辑

使用= ANY(数组变量)语法即可判断日期是否在数组中,分支逻辑示例如下:

if target_date = ANY(dateval) then
    -- 日期属于节假日的分支逻辑
    raise notice '目标日期为纽约节假日';
  else
    -- 日期不属于节假日的分支逻辑
    raise notice '目标日期不是纽约节假日';
  end if;
end;

内容的提问来源于stack exchange,提问作者Finny

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 15:24:01