MySQL — как узнать, начался ли новый час?

Как средствами MySQL узнать начался ли новый час?

А то вариант:
DATE(last_limit_error) = CURDATE() AND HOUR(last_limit_error) < HOUR(NOW()) 
OR 
DATE(last_limit_error) < CURDATE()

кажется уж больно каким-то страшненьким)
  • Вопрос задан
  • 2672 просмотра
Решения вопроса 1
shogunkub
@shogunkub
Программист+Инженер-электронщик
Если условие проверяется хотя бы раз в час, то достаточно HOUR(last_limit_error) != HOUR(NOW()).
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Возможно если я правильно понял задачу вам просто держать в таблице дату и время окончания почасового лимита, и каждый раз при отправке запроса сравнивать её с текущей датой и временем, вот и все. Дополнительных предвычислений не требуется а следовательно снижается нагрузка на сервер.

Если конечно вам не нужно будет её каждый час пролонгировать, тогда лучше воспользоваться способом описанным @shogunkub
Ответ написан
Комментировать
Kerman
@Kerman
Я вот таких людей как Вы, простите, не понимаю. Оно работает? Работает. Задачу выполняет? Выполняет. Так зачем Вы пытаетесь применить перфекционизм к простейшей задаче?

То что запрос страшненький получился - это нормально. БД не предназначена для таких вещей. Это к Вам должен быть вопрос: а почему Вы у базы спрашиваете, который час? У Вас что, крона (планировщика задач) нет? Или вы не знаете про event в MySQL?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы