Postgres - 将 TSTZRANGE 分成两列

Postgres - split TSTZRANGE in two columns

我正在使用 PostgreSQL 9.4 我在 table 中有一个名为 timerange 的列,我想编写一个 SELECT 查询,它将 return 时间范围分为两个单独的列 time_starttime_end. 我试图像处理数组一样处理它,但它不起作用:

select *, timerange[0] as t_start from schedules;

当前 table:

| id |                    timerange                        |  
|----|-----------------------------------------------------|  
| 1  | ["2017-05-05 19:00:00+02","2017-05-05 21:00:00+02") |  
| 2  | ["2017-05-05 19:00:00+02","2017-05-05 21:00:00+02") |  

想要table:

| id |        time_start        |       time_end           | 
|----|--------------------------|--------------------------|
| 1  | "2017-05-05 19:00:00+02" | "2017-05-05 21:00:00+02" |  
| 2  | "2017-05-05 19:00:00+02" | "2017-05-05 21:00:00+02" |  

Use lower()upper().

像这样:

SELECT lower(tsrng) AS start, upper(tsrng) AS end
FROM (
  SELECT tstzrange('2017-05-05 12:00:05', '2017-05-05 16:00:05', '[)') AS tsrng
) sub;

或者你的例子:

select *, lower(timerange) as t_start, upper(timerange) as t_end from schedules;