Получен запрос PostgreSQL, который работает хорошо, но не кажется очень эффективным ...
SELECT
_id,
location,
day,
title,
teacher,
canceled,
CASE
WHEN day <= EXTRACT(dow from CURRENT_DATE)::integer THEN CURRENT_DATE + day + (6 - EXTRACT(dow from CURRENT_DATE)::integer) + "startTime"
WHEN day > EXTRACT(dow from CURRENT_DATE)::integer THEN CURRENT_DATE + (day - EXTRACT(dow from CURRENT_DATE)::integer - 1) + "startTime"
END AS "startTime",
CASE
WHEN day <= EXTRACT(dow from CURRENT_DATE)::integer THEN CURRENT_DATE + day + (6 - EXTRACT(dow from CURRENT_DATE)::integer) + "endTime"
WHEN day > EXTRACT(dow from CURRENT_DATE)::integer THEN CURRENT_DATE + (day - EXTRACT(dow from CURRENT_DATE)::integer - 1) + "endTime"
END AS "endTime"
FROM "Schedules"
ORDER BY location, day, "startTime";
В этом случае столбец дня - это день недели (1-7, а не 0-6).).Он отображает даты начиная с текущей даты, поэтому, если это среда (день 4), он показывает записи с днем = 4 в качестве текущей даты, днем = 5 - это текущая дата + 1 и т. Д. Если день недели меньше, он показываетдаты следующей недели.
У кого-нибудь есть какие-либо предложения относительно оптимизации этого?