Как мне автоматизировать запросы mysql на каждый день, используя дату в качестве условия в моем запросе?

#mysql #sql #automated-tests #mysql-workbench

#mysql #sql #автоматизированные тесты #mysql-workbench

Вопрос:

Я работаю в компании, и мы находимся в ситуации, когда нам приходится выполнять запросы mysql каждый день (за предыдущий день), чтобы проверить некоторые цифры. Я был назначен на это, и у меня есть около 10 запросов для запуска каждое утро. Я хочу знать, есть ли способ, чтобы я мог автоматизировать эти запросы каждый день. Я не против войти в workbench, чтобы запустить все then сразу? Единственная сложность заключается в том, что мы используем clarion date, и поскольку я должен запускать запросы за предыдущий день, дата clarion должна будет увеличиваться каждый день.

Пример одного из запросов.

 select count(*) from item_sales
where code = 12
and date = 79686;
  

Это более старая clariondate, но она должна увеличиваться с каждым днем.

Предпочтительным ожидаемым результатом было бы получение электронной почты каждый день.

Комментарии:

1. Я бы попробовал использовать процедуру с планировщиком событий ( dev.mysql.com/doc/refman/5.7/en/events-configuration.html ).

Ответ №1:

Вы могли бы использовать простой скрипт, который бы :

  • получите временную метку за предыдущий день
  • преобразуйте его в формат clarion date
  • запустите SQL-запросы, извлеките результаты
  • отправьте электронное письмо с результатами

Когда это будет протестировано и заработает, создайте простую crontab, указав, что вы хотите, чтобы ваш скрипт запускался каждый день.

Ответ №2:

Вы можете написать ниже запрос, который обрабатывает clarion date

 query="select count(*) from item_sales
where code = 12
and date = DATEDIFF(now(),'1800-12-28')";
  

И вы можете написать сценарий оболочки или php-скрипт и настроить cronjob для выполнения этого запроса и получения результата и отправки почты с результатом.

Пример оболочки:

 data=`mysql -u $user --password=$password -e $query`;

echo "Total Count :$data" | mail -s "subject" someone@somewhere.com

  

Комментарии:

1. с незашифрованным паролем это довольно плохая идея

2. Что такое cronjob? Как мне это настроить? Спасибо за функции datediff, это здорово!

3. в Linux можно установить cronjobs или crontab, которые могут планировать вашу задачу в определенное время и с определенным интервалом. digitalocean.com/community/tutorials /…