日付配列を宣言しようとしています。
私はこれを試しました:
DECLARE
dateVal DATE[] := ['2018-01-01','2018-02-01'];
私は得ます:
ERROR: syntax error at or near "["
どうすれば適切に宣言できますか?
ARRAYキーワードを使用できます。
create table tbl (dateval date[]);
insert into tbl values(array ['20180101','20180102'::date]);
またはコードのブロックで:
do $$
declare
dateval date[];
begin
dateval := array ['20180101','20180102'::date];
end;
$$;
または、式を日付の配列としてキャストします。
do $$
declare
dateval date[];
begin
dateval := '{2015-4-12, 2015-4-19}'::date[];
end;
$$;
db <> fiddle ここ
変数が宣言時にわかっている場合は、宣言時に割り当てます。それ以外の場合は、NULLで初期化されており、割り当てるには別のステートメントが必要です。コードとパフォーマンスの小さな無駄。
DO
$$
DECLARE
dateval date[] := '{2015-4-12, 2015-4-19}';
BEGIN
-- do something
END
$$;
どちらか anarray literalor anARRAYコンストラクタ。
上記の文字列リテラルは、型が割り当てで暗黙的に定義されているため、明示的なキャストを必要としません。
関連: