У меня есть веб-сайт с рекламным постом, и я хочу добавить функцию, при которой объявление меняет статус с «активного» на «неактивное» через 30 дней. Итак, каким должен быть запрос для этого, или JavaScript справится с этой задачей?
Также скажите, пожалуйста, как это сделать.
Вы стремитесь просто не возвращать просроченные объявления с запросами SELECT или вы хотите их удалить? В любом случае в решении SQL обычно используется предложение WHERE для идентификации объявлений, срок действия которых превышает 30 дней с текущей даты.
В зависимости от версии SQL Server, которую вы используете, также можно использовать запланированное задание «обслуживания рекламы».
MySQL <> SQL Server, какой фактически вы используете? Я удалил для вас конфликтующие теги. Пожалуйста, обновите их соответствующим образом.
@DanGuzman Мне нужно обновить базу данных, поскольку я дал людям возможность активировать ее снова, если они захотят.
Зачем нужно обновлять базу по истечении срока? Укажите пункт WHERE, который я предложил, чтобы возвращались только объявления с истекшим сроком действия. Чтобы повторно активировать просроченное объявление, измените срок действия.
@Larnu Я использую сервер MySQL.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


30 дней - это большой срок. По сути, есть два метода.
Первый - использовать регулярно запланированное задание, которое изменяет статус объявлений. По сути, примерно так:
update ads
set status = 'inactive'
where create_date < current_timestamp - interval '30 day';
(Точный синтаксис и ссылки на таблицы / столбцы зависят от вашей системы.)
Второй способ - создать представление:
create view v_ads as
select a.*
from ads a
where create_date > current_timestamp - interval '30 day';
При этом объявления выбираются только за последние 30 дней. Вам никогда не придется обновлять базу данных, и вы можете настроить временной интервал, когда захотите.
Вам необходимо установить на своем сервере задание cron, которое будет запускать определенный код для изменения статуса публикации.