Z pewnością przechowywałbym Twoje subskrypcje oddzielnie od informacji o członkach. Umożliwi to nie tylko pełny rejestr wszystkich subskrypcji, ale także pomoże, jeśli potrzebujesz subskrypcji o zmiennej długości. Twoja struktura tabel może wyglądać mniej więcej tak:
subscriptions
-------------
subscription_id integer
member_id integer
start_date date
end_date date
date_paid datetime
Następnie możesz użyć SQL bezpośrednio, aby znaleźć subskrypcje, które wygasną itp. Aby znaleźć subskrypcje, które wygasną w ciągu następnych siedmiu dni, możesz mieć coś takiego
SELECT
member_id,
MAX(end_date) as expires_date
FROM
subscriptions
GROUP BY
member_id
HAVING
expires_date < DATE_ADD( CURDATE() INTERVAL 7 DAY )