【问题标题】:iteration foreach in array Postgres with array of dates在具有日期数组的 Postgres 数组中迭代 foreach
【发布时间】:2017-12-12 11:21:24
【问题描述】:

我有一个日期数组的迭代问题: 他们用另一个函数加载的数组的值。

DECLARE
  i INT;
  array DATE[]; -- values array : '{2017-01-01,2017-02-01,2017-03-01,2017-04-01}'
BEGIN
  FOREACH i IN ARRAY array
      LOOP       
        INSERT INTO table (id, date)
        VALUES (i);
  END LOOP;

Error: the input syntax is not valid for integer: «2016-02-01»

我尝试将声明从 i 更改为 date,但没有成功,我还尝试分配 i(日期)数组的第一个值 (i = array[1];),但没有成功。

有谁知道如何解决它或我做错了什么?谢谢。

【问题讨论】:

  • 不要使用字符串:array[date '2017-01-01', date '2017-02-01', ...]
  • 我不明白a_horse_whit_no_mane,加载另一个函数的数组是DATE,如何将值更改为无字符串?谢谢
  • 错误消息似乎表明您正在使用 '{2017-01-01,2017-02-01,2017-03-01,2017-04-01}' 填充该数组 - 但 2017-01-01 将被视为数字(2017 年减 1 减 1),而不是日期。如果您想要其中的真实日期,请使用适当的日期文字填充它。
  • 问题出在函数中是什么让我返回了数组?这是这个功能:stackoverflow.com/questions/47656259/… 非常感谢你 a_horse_whith_no_name

标签: arrays plpgsql postgresql-9.4


【解决方案1】:

好的,我搜索并找到了一个解决方案:我把它放在以防有人感兴趣:

for i in  coalesce(array_lower(array, 1),1)..coalesce(array_upper(array, 1),1) 
    loop
       INSERT INTO table (id, date)
       VALUES (i);
    end loop;

【讨论】:

    猜你喜欢
    • 2013-01-15
    • 2013-02-03
    • 2020-02-26
    • 2013-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-07
    • 1970-01-01
    相关资源
    最近更新 更多