Postgres - 将 TSTZRANGE 分成两列
Postgres - split TSTZRANGE in two columns
我正在使用 PostgreSQL 9.4
我在 table 中有一个名为 timerange
的列,我想编写一个 SELECT
查询,它将 return 时间范围分为两个单独的列 time_start
和 time_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;
我正在使用 PostgreSQL 9.4
我在 table 中有一个名为 timerange
的列,我想编写一个 SELECT
查询,它将 return 时间范围分为两个单独的列 time_start
和 time_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;