2015-10-31 2 views
0

У меня есть столбец временного массива (т.е. {06:00:00, 07:00:00, ...}) и хочу сравнить каждый элемент этого массива, чтобы увидеть, находится ли он между столбцом и to_time (например, 09:00: 00 в from_time и 18:00:00 в to_time), а затем сгенерировать булевский массив в новом столбце (например, {True, False, ...}).Создайте булевский массив, проверив элементы другого массива

ответ

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 только вчера. Ответ более подробно: