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