-3

ORACLE は初めてです。助けてください 日付に基づいてレコードを取得するクエリを実行しようとしています。

日付が月曜日の場合、クエリは 3 回実行されます。つまり、月曜日、日曜日、土曜日 (前日も) は他の日 (火曜日から木曜日は同じ日のみ) です。

4

2 に答える 2

0

まず、クエリを 3 回実行する場合は、プレーン以外の方法で実行する必要があります。SQL: PL-SQL, Java, C#, something.

ただし、土曜と日曜の数字を月曜の数字に含めたい場合は、CASE ステートメントなどを実行して、土曜と日曜を月曜に変更する必要があります。

 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
于 2015-06-08T03:14:36.153 に答える
0

日付に基づいてレコードを取得するクエリを実行しようとしています

カレンダーに基づくスケジューリングのために、Oracle はDBMS_SCHEDULERを提供します。

たとえば、次のジョブは 1 時間ごとに実行されます。

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>

その他の例はこちら

于 2015-06-08T04:48:35.680 に答える