8

Oracle データベースがあり、2 年間にわたるすべての日付を含むテーブルが必要です。たとえば から01/01/2011まで01/01/2013

最初にシーケンスを考えましたが、明らかにサポートされている型は数値だけなので、これを行う効率的な方法を探しています

歓声デマ

4

2 に答える 2

19

レコードのブロックに連続した日付を入力したい場合、それは簡単に実行できます。次のクエリは、10 個の日付を生成します。必要なのは、シード日を調整して開始点を示しlevelconnect by節内の を終了点に合わせて調整し、それをinsertステートメントに挿入することだけです。

SQL> select (trunc(sysdate, 'MM')-1) + level
  2  from dual
  3  connect by level <= 10
  4  /

(TRUNC(SY
---------
01-JAN-10
02-JAN-10
03-JAN-10
04-JAN-10
05-JAN-10
06-JAN-10
07-JAN-10
08-JAN-10
09-JAN-10
10-JAN-10

10 rows selected.

SQL>
于 2010-01-18T12:33:59.920 に答える
0

たとえば、datums という名前のテーブルがあり、列 datum(date type) テーブルには以下が含まれているとします。

21-01-2010
22-01-2010
01-12-2009
06-10-2008
03-07-2007

次に、次を使用できます。

SELECT * 
  FROM datums 
 WHERE datum 
 BETWEEN to_date('01/01/2009','mm/dd/yyyy') 
     AND to_date('12/31/2010','mm/dd/yyyy')

結果:

21-01-2010
22-01-2010
01-12-2009
于 2010-01-21T20:09:50.537 に答える