Просмотр сценариев старше 3 месяцев и последних 30 дней - PullRequest
0 голосов
/ 06 октября 2019

Я пытаюсь выполнить запрос, который позволит мне увидеть, где у нас запущены скрипты, которые старше 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 имеет время посещения из предела 30.

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

1 Ответ

0 голосов
/ 06 октября 2019

Я думаю, вы хотите простую фильтрацию:

select t.*
from t
where visit_datetime >= current_timestamp - interval 30 day and
      date_regen < add_months(current_timestamp, -3)
...