НОВЫЙ ОТВЕТ: Я немного подумал, думаю, у вас действительно есть решение в вашей первоначальной идее.Для каждой компании есть магазин ListProperty, в котором хранятся только те времена, когда компания открыта, как вы делаете сейчас.Затем вычислите текущее время и округлите его до ближайшего получаса, поэтому 12:50 -> 1200, затем выполните запрос
now = 1200
Select * FROM Business WHERE now in hours
Я не уверен в правильном синтаксисе запроса GQL, но естьопределенно фильтр "в".
СТАРЫЙ ОТВЕТ (Не читать) : я делаю что-то похожее, у меня нет действительно решения, кроме как "попробовать что-то другое".
Во-первых, вам нужно хранить время открытия и закрытия.Либо как два отдельных поля, либо закодируйте их в одно поле, например «09001700» для 9-5 или даже «M09001700».Или хэш двух в число, я не думаю, что это имеет огромное значение, в зависимости от того, как вы это делаете.
Тогда плохие новости.Я не особенно хорош в теории чисел, но здесь мы пытаемся закодировать два линейных набора чисел (время открытия и закрытия) таким образом, чтобы вы могли выполнить линейное> или <сравнение с третьим числомэто представляет «сейчас».Я не думаю, что это возможно, вы можете получить только успешное> или <сравнение по одному из двух чисел, либо времени открытия, либо закрытия.Поэтому, учитывая, что мы можем сделать неравенство только для одного свойства, я не думаю, что можно иметь один запрос, изолирующий только открытые хранилища. </p>
Я также не думаю, что вам нужно выполнять два запроса,Вам нужно всего лишь сделать один запрос, скажем, в часы работы, а затем отфильтровать их, чтобы узнать, какие из них закрыты.Если вы
Вам не обязательно И два больших набора вместе.Вы можете выполнить запрос по всем элементам, где сейчас> время открытия, и вручную отфильтровать результаты, ища элементы, где сейчас <время закрытия.Если вы сортируете запрос на основе времени закрытия, это должно несколько упростить фильтрацию. </p>
Решение, с которым я в конечном итоге согласился, что может сработать для вас, заключается в том, чтобы вообще не запрашивать часы работы магазина, а запрашиватьчто-то, что вернет более ограниченный набор данных, а затем отфильтрует возвращенные результаты по часам магазина.Например, если ваши пользователи выполняют поиск по местоположению, запрашивают данные о ваших предприятиях на основе местоположения и фильтруют полученные результаты по часам магазина, тогда отображаются только открытые для пользователя.