web-dev-qa-db-fra.com

POSTGRES déclarant une variable contenant un tableau de dates dans les fonctions

J'essaie de déclarer un tableau de dates.

J'ai essayé ceci:

DECLARE
dateVal DATE[] := ['2018-01-01','2018-02-01'];

Je reçois:

ERROR:  syntax error at or near "["

Comment le déclarer correctement?

2
user165242

Vous pouvez utiliser le mot clé ARRAY:

create table tbl (dateval date[]);
insert into tbl values(array ['20180101','20180102'::date]);

Ou dans un bloc de code:

do $$
declare 
    dateval date[];
begin
    dateval := array ['20180101','20180102'::date];
end;
$$;

Ou transformez l'expression en tableau de dates.

do $$
declare 
    dateval date[];
begin
    dateval := '{2015-4-12, 2015-4-19}'::date[];
end;
$$;

db <> violon ici

3
McNets

Attribuez la variable au moment de la déclaration si elle est connue au moment de la déclaration. Sinon, il est initialisé avec NULL et vous avez besoin d'une autre instruction pour l'affecter. Un petit gaspillage de code et de performances.

DO
$$
DECLARE
   dateval date[] := '{2015-4-12, 2015-4-19}';
BEGIN
   -- do something
END
$$;

Vous avez juste besoin de la bonne syntaxe pour soit un littéral de tableau ou an constructeur ARRAY.

Le littéral de chaîne ci-dessus n'a besoin d'aucune conversion explicite, car le type est défini implicitement dans l'affectation.

En relation:

2
Erwin Brandstetter