Saya pasti akan menyimpan langganan Anda secara terpisah dari info anggota Anda. Ini tidak hanya akan memungkinkan Anda mencatat semua langganan secara lengkap, tetapi juga akan membantu jika Anda perlu memiliki langganan dengan panjang variabel. Struktur tabel Anda mungkin seperti ini:
subscriptions
-------------
subscription_id integer
member_id integer
start_date date
end_date date
date_paid datetime
Kemudian Anda dapat menggunakan SQL secara langsung untuk menemukan langganan yang akan kedaluwarsa, dll. Jadi, untuk menemukan langganan apa pun yang akan kedaluwarsa dalam tujuh hari ke depan, Anda dapat memiliki sesuatu seperti
SELECT
member_id,
MAX(end_date) as expires_date
FROM
subscriptions
GROUP BY
member_id
HAVING
expires_date < DATE_ADD( CURDATE() INTERVAL 7 DAY )