Время проверки из mysql базы данных с PHP - PullRequest
1 голос
/ 04 апреля 2020

У меня есть два раза в mysql DB начинается 10:00 и заканчивается 18:00, теперь я хочу проверить с помощью PHP, если время не больше или меньше из этих двух раз, как это сделать? Спасибо Mysql установлен на ВРЕМЯ только без даты и времени, в основном я хочу проверить, не время ли сейчас между началом и концом. начало представляет = от2 и конец представляет to2. Day_id - это день недели. Это то, что не работает

$time_now = date("H:i");
//in DB format 00:00 // time
echo "SELECT * FROM opening_hrs WHERE 
        (TIME(from2) > TIME('".$time_now."')  AND TIME(to2) < TIME('".$time_now."') )
        AND day_id=".$day_id;

Любые идеи, как проверить время ("H: i"); между разами из БД?

Ответы [ 2 ]

1 голос
/ 04 апреля 2020

Попробуйте этот запрос, используя понятие MySql текущего времени.

SELECT * FROM opening_hrs 
 WHERE TIME(NOW()) >= TIME(from2)
   AND TIME(NOW()) < TIME(to2)
   AND day_id=whatever

Pro tip Будьте осторожны, используя >= для начала временных диапазонов и < для своих целей, чтобы избежать ошибок by-one .

NOW() - операция, чувствительная к часовому поясу в MySql. Если вы делаете это сразу после открытия каждого MySql соединения. Вы получите местное время из NOW().

SET time_zone = `Australia/Sydney`;

Obvs, используйте свой собственный указатель часового пояса .

0 голосов
/ 04 апреля 2020

Я бы просто использовал current_time, который является MySQL встроенным, который дает вам текущее время:

select * 
from opening_hrs 
where 
    current_time >= time(:from2)   
    and current_time < time(:to2)
    and day_id = :day_id

Обратите внимание, что вы должны использовать подготовленные операторы, а не объединять переменные в Строка запроса: подробнее об этом в этом знаменитом SO сообщении .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...