узнать время следующего открытия библиотеки с помощью запроса в формате эпохи - PullRequest
0 голосов
/ 28 мая 2020

У меня есть таблица с именем library_timing, которая содержит 2 библиотеки с днями и временем в эти дни

id  Library_id  name    Days      Open_time  Close_time
1   1          Library1 Monday    9:00:00     18:00:00
2   1          Library1 Tuesday   9:00:00     18:00:00
3   1          Library1 Wednesday 9:00:00     18:00:00
4   1          Library1 Thursday  00:00:00    00:00:00
5   1          Library1 Friday    9:00:00     18:00:00
6   2          Library2 Monday    9:00:00     18:00:00
7   2          Library2 Tuesday   9:00:00     18:00:00
8   2          Library2 Wednesday 9:00:00     18:00:00
9   2          Library2 Thursday  00:00:00    00:00:00
10  2          Library2 Friday    9:00:00     18:00:00

Теперь я хочу рассчитать, когда библиотека откроется на следующий день, следуя 3 правилам

  • Если текущее время находится между open_time и close_time, тогда следующее время открытия равно нулю
  • Если магазин закрыт, т.е. текущее время> close_time, то следующее время открытия должно быть временем открытия следующих дней с указанием даты в форме эпохи
  • Если магазин закрыт, т.е. текущее время> close_time, а следующий день - выходной, то следующим временем открытия должно быть время открытия следующих дней с датой после выходного в форме эпохи. https://www.epochconverter.com/

Ожидаемый результат

Senario 1: примите во внимание текущую дату, время - 28 мая 2020 г., 15:00:00, и возьмите ввод как id 1 из таблица, то вывод должен быть

| NextOpeningTime|
-------------------
|      0        |

Senario 2: считайте, что текущая дата и время - 28 мая 2020 года 19:00:00, и принимайте входные данные как id 2 из таблицы n время моего следующего открытия магазина должно быть временем и датой открытия id 3, т.е. 29 мая 2020 9:00:00, но в эпоху

| NextOpeningTime|
-------------------
|  1590723000   |

Senario 3: Senario 2: Считайте, что текущая дата - 28 мая 2020 19:00:00 и примите ввод как id 3 из таблицы, тогда мое следующее время открытия магазина должно быть временем и датой открытия id 5, то есть 30 мая 2020 года 9:00:00, но в эпоху

| NextOpeningTime|
-------------------
|  1590809400    |

Я ПРОБИРАЛ ЭТОТ КЕЙС В MYSQL, НО НЕ РАБОТАЕТ

 case when (curtime() - close_time) >  (curtime() - open_time)
                                      and curtime() not between open_time and close_time
then 
                                        UNIX_TIMESTAMP( subtime(curtime() , close_time))
                                      when (curtime() - close_time) <  (curtime() - open_time)
                                      and curtime() not between open_time and close_time then
                                         UNIX_TIMESTAMP(addtime(subtime( open_time, curtime()), "24:00:00"))
                                         when open_time = "00:00:00" and close_time = "00:00:00" or (open_time is null and close_time is null) then
                                        UNIX_TIMESTAMP(addtime(subtime((select open_time from library_timing where day IN (DAYNAME(CURDATE() + 1))), curtime()), "24:00:00"))
                                         else
                                         " 0"
                                   end "nextopeningtime",
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...