PHP MYSQL Возврат последних 3 месяцев с даты из БД - Mysql Запрос - PullRequest
1 голос
/ 26 апреля 2020

Я работаю над приложением PHP / MySQL. Я поражен чем-то. Например:

MySQL Таблица выглядит следующим образом:

id   |  deadline_date | reminder1   | reminder2 | reminder3
______________________________________________________________

 1       2021-04-26

В моей таблице выше указано значение deadline_date: 2021-04-26. Затем первое напоминание (напоминание1) будет отправлено 2021-02-25, второе напоминание (напоминание2) будет отправлено 2021-03-25, а третье напоминание (напоминание3) будет отправлено 2021-04-25. Таким образом, начиная с deadline_date, эти 3 напоминания должны быть рассчитаны и обновлены для определенных полей (памятка 1, напоминание 2 и напоминание 3). Таким образом, таблица должна быть заполнена следующими данными:

id   |  deadline_date | reminder1   | reminder2 | reminder3
______________________________________________________________

 1       2021-04-26     2021-02-25    2021-03-25   2021-04-25

Может кто-нибудь подсказать мне, как этого добиться? я не уверен, смогу ли я достичь этого с помощью MYSQL запроса UPDATE.

Ответы [ 3 ]

2 голосов
/ 26 апреля 2020

Для этой цели вы можете использовать Интервал

CREATE TABLE table1 (
  `id` INTEGER,
  `deadline_date` DATE,
  `reminder1` DATE,
  `reminder2` DATE,
  `reminder3` DATE
);
INSERT INTO table1
  (`id`, `deadline_date`, `reminder1`, `reminder2`, `reminder3`)
VALUES
  ('1', '2021-04-26', NULL, NULL, NULL);
UPDATE table1 t1
SET t1.`reminder1` = t1.`deadline_date`  - INTERVAL 1 DAY - INTERVAL 2 MONTH,
t1.`reminder2` = t1.`deadline_date`  - INTERVAL 1 DAY - INTERVAL 1 MONTH,
t1.`reminder3` = t1.`deadline_date`  - INTERVAL 1 DAY;
SELECT * FROM table1
id | deadline_date | reminder1  | reminder2  | reminder3 
-: | :------------ | :--------- | :--------- | :---------
 1 | 2021-04-26    | 2021-02-25 | 2021-03-25 | 2021-04-25

дБ <> скрипка здесь

1 голос
/ 26 апреля 2020

Вы можете использовать функцию DATE_ADD для установки остатков:

UPDATE mytable 
   set reminder1 = DATE_ADD(DATE_ADD(deadline_date, INTERVAL -2 MONTH), INTERVAL -1 DAY),
   reminder2 = DATE_ADD(DATE_ADD(deadline_date, INTERVAL -1 MONTH), INTERVAL -1 DAY), 
   reminder3 = DATE_ADD(deadline_date, INTERVAL -1 DAY)
1 голос
/ 26 апреля 2020
UPDATE YourTable
SET reminder3=DATE_ADD(deadline_date, INTERVAL -1 day),
reminder2=DATEA_ADD(DATE_ADD(deadline_date, INTERVAL -1 day), INTERVAL -1 MONTH),
reminder1=DATEA_ADD(DATE_ADD(deadline_date, INTERVAL -1 day), INTERVAL -2 MONTH)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...