Bene, non conosco la struttura del tuo database, ma diciamo che è qualcosa del genere:
user_table
-----------------------------------------
user_id | date_of_redeem | subscription
-----------------------------------------
user1 | 2014-02-01 | 90
user2 | 2014-05-18 | 365
user3 | 2014-07-22 | 180
Quindi, usando solo istruzioni SQL, potresti usare qualcosa, come DATE_SUB. Confronta la data_di_riscatto con la data odierna meno l'importo dell'abbonamento. Se il valore di date_of_redeem è maggiore, otterresti un risultato, altrimenti restituirebbe un set di risultati vuoto.
SELECT *
FROM `user_table`
WHERE `date_of_redeem` > DATE_SUB(NOW(), INTERVAL `subscription` DAY) AND `user_id` = 'desired_user_id'
Modifica:SQL Fiddle per la query precedente:http://sqlfiddle.com/#!2/ f95ea/11
(basta cambiare user3
a uno qualsiasi degli ID utente per verificare se restituiscono risultati.
se desideri ottenere un tavolo con tutte le date di scadenza dell'abbonamento, puoi fare qualcosa del genere:
SELECT `user_id` AS `User`, (DATE_ADD(`date_of_redeem`, INTERVAL `subscription` DAY)) AS `Subscription Ends`
FROM `user_table`
SQL Fiddle per questo:http://sqlfiddle.com/#!2/f95ea/9