Data do odnowienia

0

Hej,

Przypuśćmy, że mam bazę danych pewnych aukcji, gdzie trzymam id aukcji oraz datę jej rozpoczęcia (jako czas uniksowy).
Każda aukcja odnawia się co 30 dni, lecz nie zmienia to jej daty rozpoczęcia, i teraz tak - w jaki sposób pobrać datę najbliższego odnowienia?

W PHP zrobiłem to na takiej zasadzie (taki trochę kod na kolanie pisany):

public static function computeDaysToRenew($dateUnix) {
	$dateToday = new DateTime(date('Y-m-d H:i:s'));
	
	$dateRenew = new DateTime();
	$dateRenew->setTimestamp($dateUnix)->modify('+30 days');
	
	while ($dateRenew->getTimestamp() < $dateToday->getTimestamp()) {
		$dateRenew->modify('+30 days');
	}
	
	return (int) $dateRenew->diff($dateToday)->format('%d');
}

Lecz nie mam pomysłu na napisanie odpowiedniego zapytania w MySQL - niby mógłbym zrobić jakieś SELECT date_add(from_unixtime(date_begin), interval +30 days) AS date_renew FROM (...), lecz to nie przewiduje przypadku, gdy np. aukcja rozpoczęła się pół roku temu.

0
SELECT adddate(from_unixtime(date_begin), 30*((datediff(current_date, from_unixtime(date_begin)) div 30)+case datediff(current_date, from_unixtime(date_begin)) mod 30 when 0 then 0 else 1 end case)) AS date_renew FROM (...),

1 użytkowników online, w tym zalogowanych: 0, gości: 1