Изменение 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 шт):

Автор решения: InDerTruster

Ставим дату +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();
→ Ссылка