Repetindo eventos do calendário e algumas contas finais

Eu estou tentando ir para os infames eventos repetidos em calendários usando PHP / MySQL. Eu finalmente encontrei algo que parece funcionar. Eu encontrei meuresponda aqui mas estou tendo um pouco de dificuldade para terminar.

Minha primeira mesa 'eventos'.

<code>ID    NAME
1     Sample Event
2     Another Event
</code>

Minha segunda tabela 'events_meta que armazena os dados repetidos.

<code>ID    event_id      meta_key           meta_value
1     1             repeat_start       1336312800 /* May 7th 2012 */
2     1             repeat_interval_1  432000 /* 5 days */
</code>

Com repeat_start sendo uma data sem tempo como um registro de data e hora unix, e repeat_interval um valor em segundos entre intervalos (432000 é de 5 dias).

Eu tenho então o seguinte MySQL que eu modifiquei ligeiramente do link acima. O registro de data e hora usado abaixo (1299132000, que é 12 de maio de 2012) é o dia atual sem tempo.

<code>SELECT EV.*
FROM `events` EV
RIGHT JOIN `events_meta` EM1 ON EM1.`event_id` = EV.`id`
RIGHT JOIN `events_meta` EM2 ON EM2.`meta_key` = CONCAT( 'repeat_interval_', EM1.`id` )
WHERE EM1.meta_key = 'repeat_start'
    AND (
        ( CASE ( 1336744800 - EM1.`meta_value` )
            WHEN 0
              THEN 1
            ELSE ( 1336744800 - EM1.`meta_value` ) / EM2.`meta_value`
          END
        )
    ) = 1
</code>

No MySQL acima, o código a seguir deduz o campo repeat_start (EM1.'meta_value') a partir da data atual e, em seguida, divide-a pelo campo de intervalo de repetição (EM2.'meta_value').

<code>ELSE ( 1336744800 - EM1.`meta_value` ) / EM2.`meta_value`
</code>

OU

<code>TODAYS DATE - START DATE / 5 DAYS
</code>

Então aqui está a matemática:

<code>1336744800 - 1336312800 = 432000
432000 / 432000 = 1
</code>

Agora isso funciona perfeito. Mas se eu mudar o timestamp atual com 5 dias de antecedência para 1336312800, que é o 17th Mat 2012, será mais ou menos assim:

<code>1336312800 - 1336312800 = 864000
86400 / 432000 = 2
</code>

O que não funciona porque é igual a 2 e no MySQL ele precisa ser igual a 1. Então, eu acho que minha pergunta é, como faço para que o MySQL reconheça um número inteiro ao invés de ter que fazer isso?

<code>...
WHERE EM1.meta_key = 'repeat_start'
    AND (
        ( CASE ( 1336744800 - EM1.`meta_value` )
            WHEN 0
              THEN 1
            ELSE ( 1336744800 - EM1.`meta_value` ) / EM2.`meta_value`
          END
        )
    ) = IN (1,2,3,4,5,6,7,8,....)
</code>

Espero que eu esteja fazendo sentido e espero que seja apenas uma coisa simples de matemática ou uma função que o MySQL tem que ajudará :) Obrigado pela sua ajuda!

EDIT: a resposta

Graças ao @eggypal abaixo, eu encontrei a minha resposta e, claro, foi simples!

<code>SELECT EV.*
FROM elvanto_calendars_events AS EV
RIGHT JOIN elvanto_calendars_events_meta AS EM1 ON EM1.`event_id` = EV.`id`
RIGHT JOIN elvanto_calendars_events_meta AS EM2 ON EM2.`meta_key` = CONCAT( 'repeat_interval_', EM1.`id` )
WHERE EM1.meta_key = 'repeat_start'
AND ( ( 1336744800 - EM1.`meta_value` ) % EM2.`meta_value`) = 0
</code>

questionAnswers(1)

yourAnswerToTheQuestion