MySQL — как узнать, начался ли новый час?
Если условие проверяется хотя бы раз в час, то достаточно HOUR(last_limit_error) != HOUR(NOW()).
Я вот таких людей как Вы, простите, не понимаю. Оно работает? Работает. Задачу выполняет? Выполняет. Так зачем Вы пытаетесь применить перфекционизм к простейшей задаче?
То что запрос страшненький получился - это нормально. БД не предназначена для таких вещей. Это к Вам должен быть вопрос: а почему Вы у базы спрашиваете, который час? У Вас что, крона (планировщика задач) нет? Или вы не знаете про event в MySQL?