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?
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
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: