Проверьте часы работы в разных часовых поясах - PullRequest
0 голосов
/ 30 августа 2018

Мои характеристики:

  • Postgres 9.6.6, последняя версия Ubuntu LTS

  • Часовой пояс сервера: GMT

  • Таблица с двумя столбцами, показывающая время открытия и закрытия магазина, с каждым часовым поясом.

Вот таблица:

ShopId      OpenAt           CloseAt
  1      09:00:00 -08     17:00:00 -08
  2      09:30:00 -05     17:30:00 -05
  3      08:00:00 -11     15:00:00 -11
  4      10:00:00 +07     15:30:00 +07

Что мне нужно знать, так это если в данный момент (в мое текущее время по Гринвичу) магазин открыт. Учитывая, что в субботу и воскресенье он закрыт.

Я копаюсь и получаю что-то вроде:

 SELECT ((OpenAt,CloseAt) OVERLAPS(NOW())) AND ISODOW < 6  

без удачи ...

Спасибо
Перес

1 Ответ

0 голосов
/ 30 августа 2018

Попробуйте это:

SELECT ((date_trunc('day',nowAtShopLocation)+"OpenAt"::time, date_trunc('day',nowAtShopLocation)+"CloseAt"::time) OVERLAPS(nowAtShopLocation,nowAtShopLocation)) and EXTRACT (ISODOW FROM nowAtShopLocation) <6
from (
  select *,now() AT TIME ZONE 'UTC'+(EXTRACT(TIMEZONE_HOUR FROM "OpenAt")||' hour')::interval nowAtShopLocation from your_table
) a
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...