Oracle データベースがあり、2 年間にわたるすべての日付を含むテーブルが必要です。たとえば から01/01/2011
まで01/01/2013
。
最初にシーケンスを考えましたが、明らかにサポートされている型は数値だけなので、これを行う効率的な方法を探しています
歓声デマ
レコードのブロックに連続した日付を入力したい場合、それは簡単に実行できます。次のクエリは、10 個の日付を生成します。必要なのは、シード日を調整して開始点を示しlevel
、connect 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>
たとえば、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