Проверьте сценарии старше 3 месяцев и за последние 30 дней.

Я пытаюсь запустить запрос, который позволит мне увидеть, где у нас запущены сценарии старше 3 месяцев за последние 30 дней доставки, поэтому мы знаем, что их нужно обновить. Я смог построить запрос, чтобы показать мне все сценарии и даты их последней регенерации (с указанием конкретных дат), но не могу сработать;

  1. Как посмотреть данные только за последние 30 дней.
  2. Как просмотреть только сценарии, в которых столбец date_regen старше 3 месяцев с сегодняшней даты — из данных за последние 30 дней, которые я просматриваю.

ПРИМЕР ТАБЛИЦЫ

visit_datetime      | client | script     |    date_regen          |
2019/10/04 03:32:51 | 1      | script1    |   2019-09-17 13:12:01  |
2019/09/27 03:32:52 | 2      | script2    |   2019-07-18 09:44:02  |
2019/10/06 03:32:50 | 3      | script3    |   2019-03-18 14:08:02  |
2019/10/02 06:28:24 | 4      | script6    |   2019-09-11 10:02:01  |
2019/03/01 06:28:24 | 5      | script7    |   2019-02-11 10:02:01  |

Приведенные ниже примеры не смогли дать мне то, что мне нужно. Моя идея заключалась в том, чтобы получить текущую дату (используя now()), а затем, зная это, просмотреть все данные за последние 30 дней. После этого я бы тогда ГДЕ месяц, -3 (так что date_regen 3+ месяца от текущей даты. Однако я не могу заставить его работать. Я также пытался сделать -days, но это также не увенчалось успехом.

-- WHERE MONTH = MONTH(now()) AND YEAR = YEAR(now())
-- WHERE date_regen <= DATEADD(MONTH,-3,GETDATE())
-- WHERE DATEDIFF(MONTH, date_regen, GetDate()) >= 3

Код, который я сейчас использую для получения таблицы

SELECT split_part(js,'#',1) AS script,
date_regen,
client
FROM table
WHERE YEAR=2019 AND MONTH=10 AND DAY = 01 (This where is irrelevant as I would need to use now() but I don't know what replaces "YEAR/MONTH/DAY ="
GROUP BY script,date_regen,client
ORDER BY client DESC;

КОНЕЧНАЯ ЦЕЛЬ Я должен видеть только клиента 3, так как клиенты 1+2+4 имеют теги, в которых date_regen находится за последние 3 месяца, а у клиента 5 значение visit_datetime выходит за пределы 30.

visit_datetime      | client | script  |   date_regen           |
2019/10/06 03:32:50 | 3      | script3 |   2019-03-18 14:08:02  |

person El_Birdo    schedule 06.10.2019    source источник
comment
Что такое скрипт в ваших данных?   -  person Gordon Linoff    schedule 06.10.2019
comment
Привет, Гордон, извини за неточность. Сценарий в этом случае — это столбец js2, который представляет собой длинную строку, которую я разбил. Я отредактирую свой пост, чтобы быть немного понятнее   -  person El_Birdo    schedule 06.10.2019


Ответы (1)


Я думаю, вам нужна простая фильтрация:

select t.*
from t
where visit_datetime >= current_timestamp - interval 30 day and
      date_regen < add_months(current_timestamp, -3)
person Gordon Linoff    schedule 06.10.2019
comment
добавление этого к запросу вернуло 0 строк. Я приму ваше предложение и посмотрю, работает ли оно независимо от остальной части запроса, чтобы получить результат. - person El_Birdo; 06.10.2019