Изменение date в базе данных через PHP
у меня есть БД, в ней порядка 5.000 записей пользователей. Периодически нужно менять им дату, сейчас дата просто записана в VARCHAR. Имеет ли смысл менять формат на date, есть ли возможность одной командой добавить всем пользователям +10 дней? Нужно не просто ставить конкретную дату, а именно добавлять к той, которая стоит у пользователя, а если его дата меньше актуальной, тогда к актуальной. На данный момент реализовано через foreach, и приходится отправлять новый запрос для каждого пользователя и это занимает много времени, мне кажется что я сделал что то не так и как то можно упросить процесс.
foreach ($dbh->query($sql) as $user) {
foreach ($dbh->query($sql) as $user) {
$oldDate = new DateTime($user['date']);
$actualDate = date();
if ($oldDate < $actualDate) {
$oldDate = $actualDate;
}
$oldDate->add(new DateInterval('P'.$day_count.'D'));
$newDate = $oldDate->format('d.m.Y');
$sql_new = "UPDATE `users` SET date='".$newDate."' WHERE status=0";
$dbh->query($sql_new);
$i++;
}
echo "Добавлено ".$day_count." дней для ".$i." пользователей";
Ответы (1 шт):
Ставим дату +10 от актуальной даты для всех, у кого она меньше или равна сегодняшней
UPDATE users SET date = DATE_ADD(CURDATE(), INTERVAL 10 DAY) WHERE users.date <= current_date();
Ставим дату +10 от актуальной даты для всех, у кого она больше или равна сегодняшней
UPDATE users SET date = DATE_ADD(users.date, INTERVAL 10 DAY) WHERE users.date >= current_date();