Ce que vous voulez que votre requête fait n'est pas tout à fait clair , mais l'essentiel de votre question me pousse à suggérer que vous vous penchiez sur l'arithmétique modulaire :en SQL, a % b
renvoie le reste quand a
est divisé par b
- s'il n'y a pas de reste (c'est-à-dire a % b = 0
), puis a
doit être un multiple exact de b
.
Dans votre cas, je pense vous essayez de trouver des événements où le temps entre le début de l'événement et un littéral donné est un multiple exact de l'intervalle de l'événement :c'est-à-dire (literal - event_start) % event_interval = 0
. S'il est différent de zéro, la valeur est le temps jusqu'à la prochaine occurrence après literal
(et, par conséquent, pour déterminer si cette prochaine occurrence se produit dans un certain laps de temps, disons un jour, on testerait pour voir si le reste est inférieur à cette constante, par exemple (literal - event_start) % event_interval < 86400
).
Si ce n'est pas ce que vous recherchez, veuillez préciser exactement ce que votre requête tente d'accomplir.