0

私は Oracle データベースを持っています。そして、2つの列を持つテーブルを作成したいと思います.1つはIDを含み、もう1つは行の増分日付を含みます。PL/SQL コードで制限日を指定したいのですが、コードは 2 つの制限日 (from と to) の間の行を生成します。

これは出力結果の例です:

+-----+--------------------+
|  id |dates               |
+-----+--------------------+
|  1  |01/02/2011 04:00:00 |
+-----+--------------------+
|  2  |01/02/2011 05:00:00 |
+-----+--------------------+
|  3  |01/02/2011 06:00:00 |
+-----+--------------------+
|  4  |01/02/2011 07:00:00 |
+-----+--------------------+
|  5  |01/02/2011 08:00:00 |
....
...
..
| 334 |05/03/2011 023:00:00|
+-----+--------------------+
4

2 に答える 2

2

あなたは私たちに詳細を正確に伝えていませんが、これはあなたが望む一種の構造です:

select level as id
       , &&start_date + ((level-1) * (1/24) as dates
from dual
connect by level <= ((&&end_date - &&start_date)*24)
/

これは、入力値が 1 日であることを前提としています。開始日または終了日に時間要素が含まれている場合は、計算を調整する必要があります。

于 2013-03-28T23:57:36.427 に答える
0

日付ベースラインから始める必要があります。

vBaselineDate := TRUNC(SYSDATE);

また

vBaselineDate := TO_DATE('28-03-2013 12:00:00', 'DD-MM-YYYY HH:MI:SS');

次に、1 分、1 時間など、希望する範囲の大きさに応じて、1 日の端数を追加してベースラインを増やします。

FOR i IN 1..334 LOOP
  INSERT INTO mytable
    (id, dates)
    VALUES
      (i, (vBaselineDate + i/24));
END LOOP;
COMMIT;

1/24 = 1 時間。1/1440 = 1 分;

お役に立てれば。

于 2013-03-28T23:58:03.270 に答える