在postgres中,我尝试从pg_timezone_names()
(https://www.postgresql.org/docs/8.2/static/view-pg-timezone-names.html)中提取名称。现在,它将返回1列中的所有记录。
Postgres的版本是8.0.2,下面的图片是select pg_timezone_names()
返回的内容:
答案 0 :(得分:0)
withEnv(["AWS_REGION=${params.AWS_REGION}"]) {// do stuff }
所以env.MY_VAR='var'
echo("My Env var = ${env.MY_VAR}")
是一个返回SETOF的函数。这就是为什么你将整行看作一列,尝试:
t=# \sf pg_timezone_names()
CREATE OR REPLACE FUNCTION pg_catalog.pg_timezone_names(OUT name text, OUT abbrev text, OUT utc_offset interval, OUT is_dst boolean)
RETURNS SETOF record
LANGUAGE internal
STABLE PARALLEL SAFE STRICT
AS $function$pg_timezone_names$function$
或者在超级旧版本的情况下:
pg_timezone_names()
答案 1 :(得分:0)
我花了很多时间在此上转动之后,我想出了如何在Redshift(基于Postgres的旧版本)上进行这项工作的方法。
仅使用select pg_timezone_names()
时,它将返回一个复合行记录:
> select top 5 pg_timezone_names()
pg_timezone_names
------------------------------------------
(Antarctica/Macquarie,+11,11:00:00,f)
(Antarctica/McMurdo,NZST,12:00:00,f)
(Antarctica/Davis,+07,07:00:00,f)
(Antarctica/Rothera,-03,-03:00:00,f)
(Antarctica/DumontDUrville,+10,10:00:00,f)
但是,我们需要将复合记录分解为单独的列,然后才能分别使用它们。可以这样做:
> select top 5
tz.name,
tz.abbrev,
tz.utc_offset,
tz.is_dst
from pg_timezone_names() tz(name text, abbrev text, utc_offset interval, is_dst boolean);
name | abbrev | utc_offset | is_dst
--------------------------+--------+------------+-------
Antarctica/Macquarie | +11 | 11:00:00 | false
Antarctica/McMurdo | NZST | 12:00:00 | false
Antarctica/Davis | +07 | 07:00:00 | false
Antarctica/Rothera | -03 | -03:00:00 | false
Antarctica/DumontDUrville | +10 | 10:00:00 | false
答案 2 :(得分:0)
至少在Postgres 10+上,可以使用pg_timezone_names视图。 只需使用以下查询之一:
select * from pg_timezone_names;
或
select name from pg_timezone_names