У меня есть столбец временного массива (т.е. {06:00:00, 07:00:00, ...}
) и хочу сравнить каждый элемент этого массива, чтобы увидеть, находится ли он между столбцом и to_time
(например, 09:00: 00 в from_time и 18:00:00 в to_time), а затем сгенерировать булевский массив в новом столбце (например, {True, False, ...}
).Создайте булевский массив, проверив элементы другого массива
0
A
ответ
0
SELECT t.tbl_id, t.time_arr, a.bool_arr
FROM tbl t, LATERAL (
SELECT ARRAY (
SELECT elem BETWEEN '09:00' AND '18:00'
FROM unnest(t.time_arr) WITH ORDINALITY u(elem, ord)
ORDER BY ord
) AS bool_arr
) a;
Требуется Postgres 9.4.
SQL Fiddle с более простой версией для Postgres 9.3
Был очень похожий вопрос на dba.SE только вчера. Ответ более подробно: