#sql #oracle
#sql #Oracle
Вопрос:
У меня такое чувство, что мне нужно будет сделать это на 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;
Мне не нужно заходить и обновлять диапазон дат вручную.
Комментарии:
1. Пометьте вопрос используемой базой данных.
Ответ №1:
вы можете использовать trunc и добавить месяц, это всегда даст вам весь предыдущий месяц
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, не уверен, какую базу данных вы используете.
Комментарии:
1. Приношу свои извинения, все еще новичок в stackoverflow и изучаю, какую информацию необходимо предоставить. Я использую Oracle и благодарю вас, я буду использовать то, что вы предоставили, и протестирую
Ответ №2:
Использование add_months( trunc(sysdate,’MM’), -1 ) и trunc(sysdate, ‘MM’) решило мои проблемы.
Спасибо, Веблауд