2015-06-08 1 views
-3

Я новичок в ORACLE; помогите Я пытаюсь запустить запрос, который подтягивает записи на основе дат;Запуск запроса по выходным дням в оракуле

если дата понедельника, запрос должен выполняться трижды; то есть в понедельник, воскресенье, субботу (предыдущие дни также) для других дней (с понедельника, только на тот же день);

+0

Почему субъект сказать оракул, и это помечено для сервера SQL? Есть большая разница в обработке дат между ними –

+0

Ваш заголовок говорит Oracle, но ваш тег - SQL Server. Просьба уточнить, с какой СУБД вы работаете. – DeanOC

+0

его оракул только. –

ответ

0

Во-первых, если вы хотите, чтобы выполнить запрос в три раза вам нужно сделать это в чем-то другом, чем обычная SQL: PL-SQL, Java, C#, something.

Однако, если вы хотите в субботу и воскресенье в цифры, которые будут включены в понедельника вы будете нужно сделать что-то вроде заявления CASE, чтобы изменить Sats & Suns to Mons.

case when (trim(to_char((date), 'Day', 'NLS_DATE_LANGUAGE=ENGLISH')) 
    in ('Saturday', 'Sunday', 'Monday')) then 'Monday' 
    else trim(to_char((date), 'Day', 'NLS_DATE_LANGUAGE=ENGLISH')) 
end 
+0

благодарит Григория. Позвольте мне попробовать это –

0

Am пытается выполнить запрос, который подъезжает записи на основе даты

Для планирования на основе каландрирования, Oracle предоставляет DBMS_SCHEDULER.

Например, ниже задание будет выполняться каждый час:

SQL> BEGIN 
    2 DBMS_SCHEDULER.DROP_JOB (JOB_NAME => 'test_full_job_definition'); 
    3 END; 
    4/

PL/SQL procedure successfully completed. 

SQL> 
SQL> BEGIN 
    2 DBMS_SCHEDULER.create_job (
    3  job_name  => 'test_full_job_definition', 
    4  job_type  => 'PLSQL_BLOCK', 
    5  job_action  => 'BEGIN my_job_procedure; END;', 
    6  start_date  => SYSTIMESTAMP, 
    7  repeat_interval => 'freq=hourly; byminute=0; bysecond=0;', 
    8  end_date  => NULL, 
    9  enabled   => TRUE, 
10  comments  => 'Job defined entirely by the CREATE JOB procedure.'); 
11 END; 
12/

PL/SQL procedure successfully completed. 

SQL> 
SQL> SELECT JOB_NAME, ENABLED FROM DBA_SCHEDULER_JOBS where job_name ='TEST_FULL_JOB_DEFINITION' 
    2/

JOB_NAME         ENABL 
---------------------------------------- ----- 
TEST_FULL_JOB_DEFINITION     TRUE 

SQL> 

Больше примеров here