Chà, tôi không biết cấu trúc cơ sở dữ liệu của bạn, nhưng giả sử nó giống như thế này:
user_table
-----------------------------------------
user_id | date_of_redeem | subscription
-----------------------------------------
user1 | 2014-02-01 | 90
user2 | 2014-05-18 | 365
user3 | 2014-07-22 | 180
Vì vậy, với việc chỉ sử dụng các câu lệnh SQL, bạn có thể sử dụng một cái gì đó, chẳng hạn như DATE_SUB. So sánh date_of_redeem với ngày hôm nay trừ đi số tiền đăng ký. Nếu giá trị của date_of_redeem cao hơn thì bạn sẽ nhận được một kết quả, nếu không nó sẽ trả về một tập kết quả trống.
SELECT *
FROM `user_table`
WHERE `date_of_redeem` > DATE_SUB(NOW(), INTERVAL `subscription` DAY) AND `user_id` = 'desired_user_id'
Chỉnh sửa:SQL Fiddle cho truy vấn trên: http://sqlfiddle.com/#!2/ f95ea / 11
(chỉ cần thay đổi user3
vào bất kỳ ID người dùng nào để kiểm tra xem chúng có trả lại bất kỳ kết quả nào không.
nếu bạn muốn có một bảng với tất cả các ngày hết hạn đăng ký, thì bạn có thể làm như sau:
SELECT `user_id` AS `User`, (DATE_ADD(`date_of_redeem`, INTERVAL `subscription` DAY)) AS `Subscription Ends`
FROM `user_table`
SQL Fiddle cho điều này: http://sqlfiddle.com/#!2/f95ea/9