Ich würde Ihre Abonnements auf jeden Fall getrennt von Ihren Mitgliederinformationen speichern. Dies ermöglicht Ihnen nicht nur eine vollständige Aufzeichnung aller Abonnements, sondern hilft auch, wenn Sie Abonnements mit variabler Länge benötigen. Ihre Tabellenstruktur könnte in etwa so aussehen:
subscriptions
-------------
subscription_id integer
member_id integer
start_date date
end_date date
date_paid datetime
Dann können Sie SQL direkt verwenden, um Abonnements zu finden, die kurz vor dem Ablauf stehen usw. Um also alle Abonnements zu finden, die innerhalb der nächsten sieben Tage ablaufen, könnten Sie so etwas wie
habenSELECT
member_id,
MAX(end_date) as expires_date
FROM
subscriptions
GROUP BY
member_id
HAVING
expires_date < DATE_ADD( CURDATE() INTERVAL 7 DAY )