Динамический диапазон дат в SQL, основанный на времени выполнения запроса - PullRequest
0 голосов
/ 20 марта 2019

У меня такое чувство, что вместо этого мне нужно будет сделать это в Python, но я решил сначала проверить здесь

Я выполняю приведенный ниже запрос, который выводит отчеты для учетной записи, и хотел узнать, существует ли какой-либо способ динамического изменения данных в зависимости от месяца, в котором я их выполняю.

У меня есть эти отчеты, автоматически генерируемые из Splunk в первый месяц, и я хотел узнать, есть ли способ запустить отчеты за весь предыдущий месяц без необходимости устанавливать sysdate-30

Ниже мой запрос

select 
su.first_name, su.last_name, po.orig_nbr, po.dest_nbr, po.time_date_stamp
from popd_account_activity po
join subscriber su on po.subscriber_id=su.subscriber_id
where time_date_stamp > to_date('02-01-2019 00:00:00', 'mm-dd-yyyy HH24:MI:SS')
and time_date_stamp < to_date('02-28-2019 00:00:00', 'mm-dd-yyyy HH24:MI:SS')
and su.corp_acct_nbr=2004346
order by time_date_stamp asc;

и когда он будет запущен в следующем месяце первого числа недели, я хочу, чтобы он в основном работал

select 
su.first_name, su.last_name, po.orig_nbr, po.dest_nbr, po.time_date_stamp
from popd_account_activity po
join subscriber su on po.subscriber_id=su.subscriber_id
where time_date_stamp > to_date('03-01-2019 00:00:00', 'mm-dd-yyyy HH24:MI:SS')
and time_date_stamp < to_date('03-29-2019 00:00:00', 'mm-dd-yyyy HH24:MI:SS')
and su.corp_acct_nbr=2004346
order by time_date_stamp asc;

Без меня, чтобы войти и обновить диапазон дат вручную.

Ответы [ 2 ]

0 голосов
/ 20 марта 2019

Использование add_months (trunc (sysdate, 'MM'), -1) и trunc (sysdate, 'MM') решило мои проблемы.

Спасибо, Веблуд

0 голосов
/ 20 марта 2019

вы можете использовать усечение и добавить месяц, это всегда даст вам весь предыдущий месяц

select 
su.first_name, su.last_name, po.orig_nbr, po.dest_nbr, po.time_date_stamp
from popd_account_activity po
join subscriber su on po.subscriber_id=su.subscriber_id
where time_date_stamp > add_months( trunc(sysdate,'MM'), -1 )
and time_date_stamp < trunc(sysdate,'MM')
and su.corp_acct_nbr=2004346
order by time_date_stamp asc;

По крайней мере, в Oracle, не уверен, какую БД вы используете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...