Böyle karmaşık işlemlere ihtiyacınız yok bence
Bir kişi 30 günlük üyelik aldıysa
time()+(30*24*60*60) değerini tabloya kaydedersiniz.
Üye login olduğu sırada şu andaki time değerinden tablodaki bitiş tarihini çıkartırsınız.
süre geçmişse yani eksi değer veriyorsa üyeliğiniz bitmiş dersiniz.
Değer büyükse ayrıca kendisine üyeliğinizin bitmesine şu kadar zaman var dersiniz.
Login sırasında bunu kontrol ettirmek daha mantıklı.
Hiç login olmayan üyeler için devamlı bence db sorgu yapmaya gerek yok.