Postgres - 将TSTZRANGE拆分为两列

vei*_*ich 1 sql postgresql datetime date-range

我使用PostgreSQL 9.4我有一个名为表列timerange,并希望写一个SELECT查询将返回的时间范围在两个单独的列time_starttime_end.我试图像数组一样处理它,但它不起作用:

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

当前表格:

| id | - - - - - - - - - - -时间范围 - - - - - - - - - - - - - - ----------- |
| ---- | -------------------------------------------- ------------------------------ |
| 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")|

所需表格:

| 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"|

Łuk*_*ski 7

使用 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;
Run Code Online (Sandbox Code Playgroud)

或者你的例子:

select *, lower(timerange) as t_start, upper(timerange) as t_end from schedules;
Run Code Online (Sandbox Code Playgroud)